delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف يمكن السماح في كتابة spaces مرة واحدة في Edit
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
كيف بمكاني الغاء كتابة اكثر من
كود :
spaces في Edit او كتابة spaces مرة واحدة بين كل جملة
(31-12-2017, 06:55 PM)محمودد كتب : [ -> ]
السلام عليكم
كيف بمكاني الغاء كتابة اكثر من
كود :
spaces في Edit او كتابة spaces مرة واحدة بين كل جملة
وعليكم السلام
ضع هذا الكود في الحدث OnKeyPress
كود :
procedure TForm4.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key =#32 then ShowMessage('المسافه غير مقبوله'); end; end.
(31-12-2017, 07:34 PM)ALG2009 كتب : [ -> ]وعليكم السلام
ضع هذا الكود في الحدث OnKeyPress
كود :
procedure TForm4.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key =#32 then ShowMessage('المسافه غير مقبوله'); end; end.

شكرا لك اريد فقط عدم السماح كتابتها اكثر من مرة او عدم كتابتها اكثر من مرة بين الجمل
هكذا حل
PHP كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Edit1.Text[Length(Edit1.Text)] = #32) and (Key = #32) then
 
   Key := #0;
end; 
(31-12-2017, 08:15 PM)Agmcz كتب : [ -> ]هكذا حل
PHP كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Edit1.Text[Length(Edit1.Text)] = #32) and (Key = #32) then
 
   Key := #0;
end; 

شكرا لك هل بمكاني استخدامها مع سترنغ؟
كود :
var s:string; Key: Char; begin try if (s[Length(s)] = #32) and (Key = #32) then Key := #0; except s:=''; end; end;
الكود يعمل لكنِ يمكن عمل لصق للمسافات
السلام عليكم ورحمة الله
فى الحدث onKeyPress الخاص بالمكون Edit

استخدم الكود التالى
PHP كود :
var
 
myStr : string;
begin
 myStr 
:= Edit1.Text;
 
 if (Trim(Edit1.Text) = '') and (Key = #32) then
 
   begin
     Key 
:= #0;
 
    Exit;
 
   end;

 
 if (Edit1.SelStart > 0) and (Key = #32) then
 
  if (myStr[Edit1.SelStart] = ' ') or (myStr[Edit1.SelStart + 1] = ' ') then
    begin
     key 
:= #0;
 
    Exit;
 
   end;
end; 
(31-12-2017, 09:48 PM)justnick كتب : [ -> ]السلام عليكم ورحمة الله
فى الحدث onKeyPress الخاص بالمكون Edit

استخدم الكود التالى
PHP كود :
var
 
myStr : string;
begin
 myStr 
:= Edit1.Text;
 
 if (Trim(Edit1.Text) = '') and (Key = #32) then
 
   begin
     Key 
:= #0;
 
    Exit;
 
   end;

 
 if (Edit1.SelStart > 0) and (Key = #32) then
 
  if (myStr[Edit1.SelStart] = ' ') or (myStr[Edit1.SelStart + 1] = ' ') then
    begin
     key 
:= #0;
 
    Exit;
 
   end;
end; 
شكرا لك هل يمكن التعديل ع الكود لاستخدامه في حدث Change الخاص بالمكون edit
عندا استخدامه بالحدث onKeyPress  يمكن عمل لصق وسوف يصبح الكود بدون فائدة
(31-12-2017, 08:15 PM)Agmcz كتب : [ -> ]هكذا حل
PHP كود :
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Edit1.Text[Length(Edit1.Text)] = #32) and (Key = #32) then
 
   Key := #0;
end; 

ولكن هناك رساله خطأ عندما يكون الـ Edit  فارغ ونضغط على BackSpace
نعم يوجد خطأ
يمكن معالجته بتحقق من طول السلسلة
PHP كود :
 if Length(Edit1.Text) > 0 then
    if 
(Edit1.Text[Length(Edit1.Text)] = #32) and (Key = #32) then
 
     Key := #0; 
السلام عليكم ورحمة الله

استخدم الكود التالى لتحديد عدد المسافات واحدة فقط
كود :
function TForm1.SpaceLimiter(Str: string): string; var I : Integer; begin I := 0; while I < length(Str) do begin   if (Str[I] = ' ') and (Str[I + 1] = ' ') then   begin       Delete(Str, I + 1, 1);   end   else   begin   Inc(I);   end; end;  Result := Str; end;

وفى الحدث onChange للEdit ضع الكود التالى واخبرنى ماذا ترى
كود :
procedure TForm1.Edit3Change(Sender: TObject); begin Edit3.Text := SpaceLimiter(Edit3.Text); Edit3.SelStart := Length(Edit3.Text); end;