![]() |
mehrere Button-Captions in Memo verschieben
Hi,
ich habe hier 10 Buttons. Je nachdem, welcher angeklickt wird, soll die entsprechende Caption in das Memo eingefügt werden, wobei es egal ist, von welchem Button das kommt. Mit 10 OnClick geht das auch, aber das ist es wohl nicht. Ich vermute, das geht in die Richtung FindComponent, is, as usw. |
Re: mehrere Button-Captions in Memo verschieben
Jupp. Und mittels der Tag Property kannst du den jeweiligen Button identifizieren und dann mit einer Case Abfrage bestimmen welcher es ist.
|
Re: mehrere Button-Captions in Memo verschieben
Und warum nicht einfach so:
(Im OnClick, das jedem Button zugewiesen wird)
Delphi-Quellcode:
With Sender As TButton Do
Begin If Memo1.Lines.IndexOf(Caption) = -1 Then Memo1.Lines.Add(Caption); End; |
Re: mehrere Button-Captions in Memo verschieben
nene, die Tags sind die wiklich absolut notwendige Notreserve. 8)
Zitat:
Delphi-Quellcode:
With Sender As TButton Do
Memo1.Lines.Add(Caption); |
Re: mehrere Button-Captions in Memo verschieben
Das hattest du doch schon mal mit Drag'nDrop in ListBoxes, oder?
Einfach Doppelklick auf einen deiner Buttons im Designer, Im Code-Editor mein Code-Schnipsel einfügen. Diese Event-Prozedur kannst du jetzt im OI dem OnClick jedes Buttons zuweisen, der seine Caption ins Memo schreiben soll. Wenn du jetzt [ButtonName]OnClick in meinetwegen btnCaptionOnKlick umbenennst (am Besten im OI), wirds übersichtlicher... 8) Nachtrag: Das ...
Delphi-Quellcode:
... sollte verhindern, dass es doppelte Einträge im Memo gibt...
If Memo1.Lines.IndexOf(Caption) = -1 Then
|
Re: mehrere Button-Captions in Memo verschieben
Hi,
gut für den Tip mit meinem anderen Thread. :lol: Das geht jetzt so weit. Übrig geblieben ist noch eine Frage: Wie geht das, wenn ich den OI nicht bemühen will, z.B. zur Laufzeit ? Und noch was: zwischenzeitlich ist das kein Button mehr, sondern ein Panel mit Label. Mit dem Label geht das jetzt, wie gewünscht. Wenn der User das aber nicht genau trifft, sondern das umrandende Panel, sollte trotzdem die Label.Caption in das Memo. Die Frage wäre jetzt noch wie ich das erweitere, daß beim OnClick des Panels die Caption des daraufliegenden Labels zur Verfügung steht :?: |
Re: mehrere Button-Captions in Memo verschieben
Ungetested, nur schnell heruntergetippt.
(Ich bin eigentlich gerade am Rechnerschrauben :wink: )
Delphi-Quellcode:
Edit: Tippfehler & Comment in der Schleife...
Var
TempCaption: String; i: Integer; Begin If Sender Is TButton Then TempCaption := TButton(Sender).Caption; If Sender Is TLabel Then TempCaption := TLabel(Sender).Caption; If Sender Is TPanel Then With Sender As TPanel Do For i := 0 To pred(ControlCount) Do If Controls[i] Is TLabel Then Begin TempCaption := TLabel(Controls[i]).Caption; // Läßt du das "Break" weg, werden alle Labels in das Memo geschrieben. Mit "Break" nur das erste, dass gefunden wird. (Falls die Caption nicht schon im Memo steht) Break; End; If (TempCaption <> '') And (Memo1.Lines.IndexOf(TempCaption) = -1) Then Memo1.Lines.Add(TempCaption); End; |
Re: mehrere Button-Captions in Memo verschieben
ich habe das jetzt etwas umgebaut und es funktioniert auch wie gewünscht. Aber eine letzte Frage noch:
wozu die die for-Schleife ?
Delphi-Quellcode:
Statt des i bräuchte ich eigentlich nur den aktuellen Wert der Caption des Labels, das auf dem Panel liegt. Bzw., was macht das ControlCount genau ?
procedure TForm1.PanelClick(Sender: TObject);
var i : integer; TempCaption : string; begin If Sender Is TLabel Then TempCaption := TLabel(Sender).Caption; If Sender Is TPanel Then With Sender As TPanel Do for i := 0 to pred(ControlCount) do If Controls[i] is TLabel then TempCaption := TLabel(Controls[i]).Caption; Memo1.Lines.Add (TempCaption); end; |
Re: mehrere Button-Captions in Memo verschieben
Hi!
Zitat:
Ciao fkerber |
Re: mehrere Button-Captions in Memo verschieben
Wenn du die Caption eines Panels willst auf dem kein Label liegt, dann:
Delphi-Quellcode:
p.s.: Wie kann man so lange mit Delphi arbeiten ohne Controls/ControlCount zu kennen :gruebel:
...
If Sender Is TPanel Then With Sender As TPanel Do Begin for i := 0 to pred(ControlCount) do If Controls[i] is TLabel then TempCaption := TLabel(Controls[i]).Caption; If TempCation = '' Then TemCaption := Caption; End; ... Ich bin erst vor ca. 1 Jahr zu Delphi gekommen :P |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz