PDA

View Full Version : سوال: استفاده از ProgressBar به جای TrackBar



Mask
یک شنبه 05 تیر 1390, 21:08 عصر
با عرض سلام خدمت دوستان عزیز
چطوری میشه دقیقا مثل TrackBar ، وقتی میریم روی ProgressBar بتونیم position ش رو تغییر بدیم با موس.:لبخندساده:
ممنون از راهنماییتون.

SAASTN
یک شنبه 05 تیر 1390, 22:56 عصر
سلام
دقیقا یکی نیست ولی برای شروع بد نیست. البته چون ProgressBar اون هندل ScrollBar و TrackBar رو نداره، کلا باید ببینید چکار می خواید بکنید. چون ScrollBar و TrackBar در موقع کلیک یا درگ بسته به این که محل کرسر روی هندل هست یا نه رفتار متفاوتی دارن.
procedure TForm1.FormCreate(Sender: TObject);
begin
with TProgressBar.Create(Self) do
begin
Parent := Self;
SetBounds(0, 0, 300, 17);
Min := -100;
Max := 100;
OnMouseMove := ProgressBarMouseMove;
end;
end;

procedure TForm1.ProgressBarMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then
with TProgressBar(Sender) do
Position := Min + Round(X * ((Max - Min) / Width));
end;

Mask
سه شنبه 07 تیر 1390, 18:39 عصر
سلام
حاجی ممنون.
کدت رو تو دلفی 7 که اجرا میکنم . مشکل داره.
اگه بتونی یه نمونه بزاری بهتره.
ممنون.

یوسف زالی
چهارشنبه 08 تیر 1390, 00:04 صبح
سلام.
با اجازه من یکمی تکمیلش کنم:


procedure TForm1.ProgressBar1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ProgressBar1.Tag := 1;
ProgressBar1.OnMouseMove(Sender, Shift, X, Y);
end;
procedure TForm1.ProgressBar1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if ProgressBar1.Tag = 0 then
exit;
ProgressBar1.Position := ProgressBar1.Min + Round(X * ((ProgressBar1.Max - ProgressBar1.Min) / ProgressBar1.Width));
end;
procedure TForm1.ProgressBar1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ProgressBar1.Tag := 0;
end;

SAASTN
چهارشنبه 08 تیر 1390, 00:31 صبح
چه مشکلی؟ آخه چیزی نداره که بخواد با کامپایل مختلف نتیجه متفاوت داشته باشه.
به هر صورت قایل Exe رو قرار میدم یه بررسی بکنید:

Mask
چهارشنبه 08 تیر 1390, 13:01 عصر
چه مشکلی؟ آخه چیزی نداره که بخواد با کامپایل مختلف نتیجه متفاوت داشته باشه.
به هر صورت قایل Exe رو قرار میدم یه بررسی بکنید:
ممنون. اشتباه از بی دقتی من بود که حل شد.
تشکر