Eintrag aus ListBox übernehmen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Eintrag aus ListBox übernehmen

Beitrag von Andromeda »

Hallo,

ich habe in meinem Programm 10 Labels, die ich mit Einträgen aus einer Textdatei beschriften will. Mit einem einzelnen Label funktioniert das auch mit

Code: Alles auswählen

 
procedure TFormHaupt.ListBoxClick(Sender: TObject);
var
  i : Integer;
begin
for i := 0 to ListBox.Items.Count -1 do
    begin
      if ListBox.Selected[i]
        then LabelW1.Caption:=ListBox.Items.Strings[i];
  end;
 
aber woher weiß mein Programm bei mehreren Labels, von welchem aus ich die ListBox aufgerufen habe?
Statt LabelW1 soll der String in das Label übernommen werden, von dem aus die Listbox aufgrufen wurde.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2639
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Eintrag aus ListBox übernehmen

Beitrag von m.fuchs »

Wie ruft man eine Listbox auf? Irgendwie kann ich nciht herauslesen, was du eigentlich machen möchtest.

Und dein geposteter Quellcode ist auch etwas seltsam. Erlaubst du MultiSelect in deiner Listbox und wenn ja: warum?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: Eintrag aus ListBox übernehmen

Beitrag von Andromeda »

Also ich habe in meinem Programm 10 Labels. Mit einem Mausklick von jedem dieser Labels kann ich die Listbox aufrufen und nach der Auswahl soll der Text in das aufrufende Label übernommen werden. MultSelcet steht auf false.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2639
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Eintrag aus ListBox übernehmen

Beitrag von m.fuchs »

Andromeda hat geschrieben:Also ich habe in meinem Programm 10 Labels. Mit einem Mausklick von jedem dieser Labels kann ich die Listbox aufrufen und nach der Auswahl soll der Text in das aufrufende Label übernommen werden.

Was bedeutet "Listbox aufrufen"?

Andromeda hat geschrieben:MultSelcet steht auf false.

Dann kannst du deinen obigen Quellcode vereinfachen:

Code: Alles auswählen

procedure TForm1.ListBoxClick(Sender: TObject);
begin
  LabelW1.Caption := ListBox.Items[ListBox.ItemIndex];
end;

Ich würde das auch nicht im OnClick sondern im OnSelectionChange machen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: Eintrag aus ListBox übernehmen

Beitrag von Andromeda »

Vielen Dank,

das stimmt. Das ist viel einfacher.

Aber mein Hauptproblem ist, dass das ausgewählte Item dem richtigen Label zugeordnet wird. Die Listbox ist normalerweise unsichtbar. Mit einem Klick auf eines der 10 Labels wird sie sichtbar, und dann soll der ausgewählte Eintrag auch diesem Label und nicht einem der 9 anderen zugeordnet werden.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2639
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Eintrag aus ListBox übernehmen

Beitrag von m.fuchs »

Ah, jetzt weiß ich was du möchtest. Ist auch recht einfach zu lösen.

Du legst dir im Form ein privates Feld vom Typ TLabel an. In deiner OnClick-Methode für die Labels, weist du diesem Feld den Wert von Sender zu (Typecasting nicht vergessen). Dann machst du die Listbox sichtbar. Im OnSelectionChange der Listbox sprichst du nun dein privates Feld an und schon läuft es so wie du es haben willst.

Wenn du es etwas genauer brauchst, sag Bescheid.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: Eintrag aus ListBox übernehmen

Beitrag von Andromeda »

m.fuchs hat geschrieben:Du legst dir im Form ein privates Feld vom Typ TLabel an.


Und wie mache ich das?

Tut mir leid, wenn ich mich so unverständlich ausdrücke.

Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: Eintrag aus ListBox übernehmen

Beitrag von Andromeda »

ich habe jetzt noch was von "Tag" gelesen. Könnte ich mein Problem vielleicht auch damit lösen? Damit habe ich noch nie gearbeitet.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2639
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Eintrag aus ListBox übernehmen

Beitrag von m.fuchs »

Hm, da fehlen wohl noch ein paar Grundlagen.

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    ListBox1: TListBox;
    procedure Label1Click(Sender: TObject);
    procedure ListBox1SelectionChange(Sender: TObject; User: boolean);
  private
    SelectedLabel: TLabel;  // <- das ist das private Feld
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.lfm}
 
// Diese Methode weist du den OnClick aller TLabel zu
procedure TForm1.Label1Click(Sender: TObject);
begin
  SelectedLabel := Sender as TLabel;
  ListBox1.Visible := True;
end;
 
procedure TForm1.ListBox1SelectionChange(Sender: TObject; User: boolean);
begin
  SelectedLabel.Caption := ListBox1.Items[ListBox1.ItemIndex];
  ListBox1.Visible := False;
end;
 
end.                                           
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: Eintrag aus ListBox übernehmen

Beitrag von Andromeda »

m.fuchs hat geschrieben:Hm, da fehlen wohl noch ein paar Grundlagen.[/code]

Ja, trotzdem macht es mir Spaß.

Vielen Dank. Das hat wunderbar funktioniert.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2639
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Eintrag aus ListBox übernehmen

Beitrag von m.fuchs »

Andromeda hat geschrieben:
m.fuchs hat geschrieben:Hm, da fehlen wohl noch ein paar Grundlagen.

Ja, trotzdem macht es mir Spaß.

Soll auch kein Hinweis darauf sein, dass du es lassen sollst. Und die Grundlagen sind auch recht leicht zu erlernen, schau dir doch beispielsweise mal dieses Kapitel an: https://de.wikibooks.org/wiki/Programmi ... l:_Klassen
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten