ورود

View Full Version : سوال: نحوه استفاده از کنترل updown



hasandrw
یک شنبه 23 مرداد 1390, 17:27 عصر
با سلام
من تاریخ سیستم را مطابق (1390/05/23) در یک Mask Edit نمایش می دم.چجوری می تونم با کنترل updown با کلیک در محدوده روز ،ماه و یا سال محدوده آنها را به عقب یا جلو برگردونم.

MohsenB
دوشنبه 24 مرداد 1390, 12:20 عصر
سلام

معمولا تو این جور موارد از چند تا کنترل ادیت استفاده میشه .
ولی شما میتونید از کد زیر استفاده کنید :

توضیح اینکه شما باید مشخصه ی HideSelection از اون ادیت رو False کنید .



procedure UpDown(var edt :TEdit; UD :Boolean=True);
var y,m,d,bs :SmallInt;
procedure setSel;
begin
with edt do begin
case SelStart of
0..4: begin SelStart:= 0; SelLength:= 4; end;
5..7: begin SelStart:= 5; SelLength:= 2; end;
8..10:begin SelStart:= 8; SelLength:= 2; end;
end;
end;
end;
begin
with edt do begin
y:= StrToInt(Copy(Text, 1, 4));
m:= StrToInt(Copy(Text, 6, 2));
d:= StrToInt(Copy(Text, 9, 2));
if UD then
case SelStart of
0..4: y:= y + 1;
5..7: if m<12 then m:= m + 1;
8..10:if ((m<=6) and (d<31))or((m>6)and(d<30)) then d:= d + 1;
end
else
case SelStart of
0..4: if y>1300 then y:= y - 1;
5..7: if m>1 then m:= m - 1;
8..10:if d>1 then d:= d - 1;
end;
bs:= SelStart;
Text:= Format('%.4d/%.2d/%.2d',[y,m,d]);
SelStart:= bs;
setSel;
end;
end;

// مثال از کاربرد
procedure TForm1.btnUpClick(Sender: TObject);
begin
UpDown(Edit1);
end;

procedure TForm1.btnDownClick(Sender: TObject);
begin
UpDown(Edit1, False);
end;

hasandrw
دوشنبه 24 مرداد 1390, 18:07 عصر
متشکرم از همکاریتون
درست جواب میده ولی اگه بخوام از خود کنترل updown استفاده کنم باید تو چه رویدادی براش کد بنویسم؟

MohsenB
سه شنبه 25 مرداد 1390, 00:04 صبح
خواهش میکنم

من که نگفتم کار نمی کنه .


یه رویداد داره به صورت :


Click(Sender: TObject; Button: TUDBtnType);


وقتی نوع کلید را نگاه کنید به :


TUDBtnType = (btNext, btPrev);

می رسید . پس با ید اینطور بنویسید :


procedure TForm1.ud1Click(Sender: TObject; Button: TUDBtnType);
begin
if Button=btNext then
UpDown(Edit1)
else
UpDown(Edit1, False);
end;


و یا راحتتر :


procedure TForm1.ud1Click(Sender: TObject; Button: TUDBtnType);
begin
UpDown(Edit1, (Button=btNext));
end;

hasandrw
دوشنبه 14 شهریور 1390, 00:45 صبح
چرا کنترل UpDown درست کار نمی کنه.مثلا کلید Down تا 4 تا کلید بیشتر کار نمی کنه . در حالی که همون کد با کنترل Button درست جواب میده.
اگه میشه بررسی کنید.
if Button=btNext then begin
UpDown(MaskEdit1);
end
else begin
UpDown(MaskEdit1, False);
end;

Felony
دوشنبه 14 شهریور 1390, 05:35 صبح
کد زیر رو در رویداد OnChangingEx کنترل UPDown مورد نظر بنویسید :

if Direction = updUp then
UpDown(MaskEdit1)
else
UpDown(MaskEdit1, False);

MohsenB
سه شنبه 15 شهریور 1390, 15:35 عصر
سلام

اون کد اول رو به این صورت تغییر بدین:

procedure TForm1.ud1Click(Sender: TObject; Button: TUDBtnType);
begin
UpDown(Edit1, (Button=btNext));
ud1.Position:= 0;
end;

Mask
چهارشنبه 23 آذر 1390, 15:27 عصر
خودت این کد رو تست کردی؟
هیچکدوم کار نمیده.
فقط کد آقای تاجیک کار داد.

MohsenB
چهارشنبه 23 آذر 1390, 19:33 عصر
خودتون این کد رو تست کردین؟
هیچکدوم کار نمیده.
فقط کد آقای تاجیک کار داد.

سلام

بله همش تست شدس .