Hi ihr Anfänger... grins... wieso sagt keiner AnsiLastChar ????
@Fantasia:
Ich komm' zwar von D7 aber Lazarus kennt auch AnsiLastChar. Das eignet sich super um von mehreren Komponenten die Sender Variable auszuwerten:
If AnsiLastChar(TButton(Sender).Name) = '1' Then ShowMessage('Button 1 wurde gedrückt');
oder
AnsiLastChar('Text');
oder
If AnsiLastChar('Fantasia') = 'a' Then ShowMessage('Volltreffer');
usw. usw. usw. ....
OK, ich sollte nicht nur das Fettgedruckte lesen...
Edit: Schau dir mal "Delete" an !!!
Code: Alles auswählen
// Label1 löschen mit Backspace...
// KeyPreview auf True von Form1
Procedure TForm1.FormCreate(Sender: TObject);
Begin
Form1.DoubleBuffered := True;
End;
Procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
Var
s : AnsiString;
Begin
If Key = Chr(8)
Then
Begin
s := Label1.Caption;
Delete(s,Length(s), 1);
Label1.Caption := s;
End;
End;
Code: Alles auswählen
// KeyPreview im Objektinspektor = True
// Uses Windows (+ Sound) hahaha... Backspace Delete
Procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
Var
s : AnsiString;
Begin
If Key = Chr(8)
Then
Begin
s := Label1.Caption;
If Length(s) = 0 Then Exit;
Windows.Beep(800,30);
Delete(s,Length(s), 1);
Label1.Caption := s;
End;
End;
oder so
Code: Alles auswählen
// wenn es zu sehr flackert, dann Form1.DoubleBuffered := True; im OnCreate der Form
Procedure TForm1.Button1Click(Sender: TObject);
Var
s : String;
Begin
s := Label1.Caption;
SetLength(s, Length(s)-1);
Label1.Caption := s;
End;
Code: Alles auswählen
// uses Windows, Form1 (im Objektinspektor KeyPreview auf True stellen)
// Komponenten: Form1 und Label1... dann löschen mit Backspace
// wenn es zu sehr flackert, dann Form1.DoubleBuffered := True; im OnCreate der Form
Procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
Var
s : String;
Begin
If (Key = vk_Back)
Then
Begin
s := Label1.Caption;
SetLength(s, Length(s)-1);
Label1.Caption := s;
End;
End;
Code: Alles auswählen
// ohne uses Windows aber mit KeyPreview : True, Löschen mit Backspace
// wenn es zu sehr flackert, dann Form1.DoubleBuffered := True; (OnCreate)
Procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
Var
s : String;
Begin
If Key = Chr(8)
Then
Begin
s := Label1.Caption;
SetLength(s, Length(s)-1);
Label1.Caption := s;
End;
End;
Unendliche Weiten.... ähmmm Möglichkeiten meine ich....