Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Listbox (https://www.delphipraxis.net/1983-problem-mit-listbox.html)

DaHooL2k 1. Jan 2003 23:36


Problem mit Listbox
 
Code:
procedure TFrame3.ListBox1Click(Sender: TObject);
var i:byte;
begin
  for i := 0 to (ListBox1.Items.Count - 1) do begin
  try
    if ListBox1.Selected[i] then
    begin
      if ListBox1.Items.Strings[i] = 'BRAUN' then
      begin
      Label1.Color:=clMaroon;
      end;
   end;
  finally
 end;
end;
Nun habe ich damit folgende Probleme:

1. Wenn man z.B. "BRAUN" in der Liste anklickt,
wird das Label zwar braun, aber wenn man wieder "BRAUN"
anwählt, wird es ja un-makiert, und bekommt den vorherigen wert.
2. Wenn man in die Listbox klickt, neben den text,
so scrollt die listbox ganz nach unten.
3. Wurde der erste wert in der listbox makiert (aktiviert)
und makiere ich dann den 2ten wert, so kann ich nur noch nachfolgende
Werte makieren aber nicht mehr der 1ste.. also das is auch bei 2ten und 3ten...also ich kann vorige einträge zwar makieren, aber es passiert nichts mehr

Den code oben habe ich nicht selbst geschrieben,
den hab ich irgendwo gefunden, un da er nicht das macht,
was ich gerne möchte... denke ich es gibt bestimmt noch
eine ganz andere möglichkeit aktionen aus zu führen,
wenn man einträge in der listbox makiert!?

bin für jede hilfe dankbar

gruß

DH

Daniel B 2. Jan 2003 00:28

Moin DH,

schreibe in der ListBox, im ObjectInspector undter Items, folgende Begriffe: Nach jedem Enter!

BRAUN
ROT
BLAU

in der OnClick-Prozedur der ListBox, schreibst Du folgenden Code:
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to ListBox1.Items.Count -1 do
  begin
    try
      if ListBox1.Selected[i] then
      begin
        if ListBox1.Items.Strings[i] = 'BRAUN' then
        begin
          Label1.Color := clMaroon;
        end
        else if ListBox1.Items.Strings[i] = 'ROT' then
        begin
          Label1.Color := clRed;
        end
        else if ListBox1.Items.Strings[i] = 'BLAU' then
        begin
          Label1.Color := clBlue;
        end;
      end;
    except
      ShowMessage('Ein Fehler ist aufgetreten!');
    end;
  end;
end;
Bei jedem Click, nimmt das Label die jeweilige Farbe an. Und wenn man wieder auf die gleiche Farbe drauf klickt, dann bleibt die Farbe.

Btw: Deinen Code kannst Du gar nciht kompilieren, weil da ein end; gefehlt hat! Und was Du mit einem try..finally willst, ist auch nicht Klar, wenn da try..except, zum Fehler abfangen. Siehe Source.

Deine Probleme verstehe ich nicht, oder da stimmt was ganz anderes nicht.

Grüsse, Daniel :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 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