![]() |
|
تكبير الحرف الاول فى Edit - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : مصادر دلفي مفتوحة تعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=14) +--- الموضوع : تكبير الحرف الاول فى Edit (/showthread.php?tid=7770) |
تكبير الحرف الاول فى Edit - justnick - 28-04-2016 السلام عليكم ورحمة الله وبركاته === منذ فترة احتجت الى خاصية تكبير تلقائى للحروف الاولى للكلمات فعند ادخال مثلا اسم الصنف يقوم الEdit بتكبير الحروف الاولى للكلمات مثال : pronto plus tab -----> Pronto Plus Tab وهكذا... وكان هذا كالاتى اولا قمت بكتابة function تاخذ متغير من النوع string وتعيد ايضا ناتج من النوع string اسميتها UpperCaseFirstLetter كود : function TForm1.UpperCaseFirstLetter(Str: String): String;
var
myStr : String;
begin
while length(str) > 0 do
begin
if pos(' ',str) > 0 then
begin
myStr := myStr + UpperCase(Copy(Str,1,1)) + Copy(Str,2,pos(' ',Str) - 1);
Delete(str,1,pos(' ',Str) );
end //End of if
else
begin
myStr := myStr + UpperCase(Copy(Str,1,1)) + Copy(Str,2,length(Str) - 1);
Delete(str,1,length(Str));
end; // End of else
end; // End of Do
Result := myStr;
end;وفى الحدث onchange للedit ببساطة قمت باستدعاء الدالة UpperCaseFirstLetter كود : procedure TForm1.Edit1Change(Sender: TObject);
var
OldSel : Integer;
begin
if Trim(Edit1.Text) <> '' then
begin
OldSel := Edit1.SelStart;
Edit1.Text := UpperCaseFirstLetter(Edit1.Text);
Edit1.SelStart := OldSel;
end;
end;ملحوظة قمت بعمل كمبونت جديد به هذا الخاصية بالاضافة الى property من النوع Boolean بحيث يمكنك تشغيل او اطقاء هذه الخاصية هذا كل شئ والسلام عليكم ورحمة الله وبركاته اللهم ارحم ابى وانر قبره واجعل مثواه الجنة RE: تكبير الحرف الاول فى Edit - justnick - 28-04-2016 بعد مشاركة الكود فكرت فى طريقة اسهل لعمل الدالة وبالفعل اعتمدت على ان الstring هو مصفوفة من الحروف وبستخدام حلقة تكرارية For كان الحل ابسط من ما كان عليه كود : function TForm1.UpperCaseFirstLetter2(Str: string): string;
var
I : Integer;
begin
Str[1] := UpCase(Str[1]);
for I := 0 to length(Str) - 1 do
if Str[i] = ' ' then Str[i+1] := UpCase(Str[i+1]);
Result := Str;
end;وفى الحدث onChange الخاص بEdit استدعيت الدالة على النحو التالى كود : procedure TForm1.Edit1Change(Sender: TObject);
var
OldSelBok : Integer;
begin
if Trim(Edit1.Text) <> '' then
begin
OldSelBok := Edit1.SelStart;
Edit1.Text := UpperCaseFirstLetter2(Edit1.Text);
Edit1.SelStart := OldSelBok;
end;
end; |