AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

mehrere Button-Captions in Memo verschieben

Ein Thema von Hansa · begonnen am 29. Feb 2004 · letzter Beitrag vom 1. Mär 2004
Antwort Antwort
Seite 1 von 2  1 2      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#1

mehrere Button-Captions in Memo verschieben

  Alt 29. Feb 2004, 00:41
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: mehrere Button-Captions in Memo verschieben

  Alt 29. Feb 2004, 00:45
Jupp. Und mittels der Tag Property kannst du den jeweiligen Button identifizieren und dann mit einer Case Abfrage bestimmen welcher es ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#3

Re: mehrere Button-Captions in Memo verschieben

  Alt 29. Feb 2004, 00:51
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;
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: mehrere Button-Captions in Memo verschieben

  Alt 29. Feb 2004, 01:35
nene, die Tags sind die wiklich absolut notwendige Notreserve. 8)

Zitat von Robert_G:
(Im OnClick, das jedem Button zugewiesen wird)
Genau das, jeder Button soll im OnClick sein Caption in das Memo schreiben. Dem Memo sollte es aber egal sein, von welchem der Buttons das stammt. Wie weise ich also jetzt allen Buttons dieselbe OnClick zu Ich will ja die 10 einzelnen ausschalten. Das müßte reichen, aber wo und wie einbauen ?

Delphi-Quellcode:
With Sender As TButton Do
   Memo1.Lines.Add(Caption);
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: mehrere Button-Captions in Memo verschieben

  Alt 29. Feb 2004, 01:53
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 ...
    If Memo1.Lines.IndexOf(Caption) = -1 Then ... sollte verhindern, dass es doppelte Einträge im Memo gibt...
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#6

Re: mehrere Button-Captions in Memo verschieben

  Alt 29. Feb 2004, 12:54
Hi,

gut für den Tip mit meinem anderen Thread. 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
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: mehrere Button-Captions in Memo verschieben

  Alt 29. Feb 2004, 13:48
Ungetested, nur schnell heruntergetippt.
(Ich bin eigentlich gerade am Rechnerschrauben )

Delphi-Quellcode:
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;
Edit: Tippfehler & Comment in der Schleife...
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: mehrere Button-Captions in Memo verschieben

  Alt 29. Feb 2004, 15:03
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:
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;
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 ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#9

Re: mehrere Button-Captions in Memo verschieben

  Alt 29. Feb 2004, 15:15
Hi!

Zitat von OH:
Die Eigenschaft ControlCount gibt die Anzahl der untergeordneten Steuerelemente zurück.
Es zählt also, wie viele Controls auf dem Panel liegen.

Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: mehrere Button-Captions in Memo verschieben

  Alt 1. Mär 2004, 11:04
Wenn du die Caption eines Panels willst auf dem kein Label liegt, dann:
Delphi-Quellcode:
  ...
  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;
  ...
p.s.: Wie kann man so lange mit Delphi arbeiten ohne Controls/ControlCount zu kennen
Ich bin erst vor ca. 1 Jahr zu Delphi gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz