Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Allgemeine Frage zur Verwendung von TListbox (https://www.delphipraxis.net/66807-allgemeine-frage-zur-verwendung-von-tlistbox.html)

Corpsman 4. Apr 2006 16:48


Allgemeine Frage zur Verwendung von TListbox
 
Hi,

Ich Programmiere schon seit über 7 Jahren und benutze sehr Häufig die Klasse Tlistbox.

Seit dem ersten mal mus ich jedesmal folgenden Code einfügen wenn ich Tlistbox benutzen will.

Delphi-Quellcode:
Procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
Begin
  ListBox1.ItemIndex := ListBox1.ItemAtPos(point(x, y), true);
End;
Ich weis schon was der Code macht, so ist das nicht, nur finde ich es irgendwie blöd das man das so machen mus.

Erst vor Kurzer Zeit habe ich eine TListbox für die DelphiX Komponenten gebaut. Hier habe ich natürlich den Code direct in meine Klasse eingebaut. ( Was übrigens auch nicht besonders schwer war )

Die Frage die sich mir stellt, gibt es auch eine andere Möglichkeit den oben geschriebenen Code um zu setzen ?

Das man ihn Braucht steht auser Frage.

Corpsman

Die Muhkuh 4. Apr 2006 16:51

Re: Allgemeine Frage zur Verwendung von TListbox
 
Hi,

ich versteh zwar nicht ganz, was du willst, aber der ItemIndex setzt sich von alleine, wenn man auf die ListBox klickt, da brauchst du nicht "nachhelfen".

*Ein verwirrtes Spinnchen*

[edit] Oh Gott, schon 3000 Beiträge, solangsam werde ich auch eine "Forennervensäge" :mrgreen: *ganz scheinheilig zu Luckie mit seinen 18000 Beiträgen rüber schaut :angel2: * [/edit]

Corpsman 4. Apr 2006 19:30

Re: Allgemeine Frage zur Verwendung von TListbox
 
Ich Programmiere mit Delphi 5 Pro

Und bei mir setzt sich das definitiv nicht von selbst.

Das Stimmt nur wenn der Scrollbalken nicht sichtbar ist.

marabu 4. Apr 2006 20:22

Re: Allgemeine Frage zur Verwendung von TListbox
 
Es tut mir leid dir das schreiben zu müssen, aber dein D5Pro scheint defekt zu sein. Der ItemIndex passt sich bei einem Klick auf die ListBox automatisch an - wie Manuel bereits geschrieben hat. Vielleicht möchtest du ein Demo-Projekt veröffentlichen, mit dem man dein Problem nachvollziehen kann?

Grüße vom marabu

3_of_8 4. Apr 2006 20:24

Re: Allgemeine Frage zur Verwendung von TListbox
 
Wenn schon, dann ist seine DCU kaputt. Aber die Wahrscheinlichkeit ist mehr als gering, da bei einem Datendefekt ein Compilerfehler ungleich wahrscheinlicher wäre.

Corpsman 4. Apr 2006 20:28

Re: Allgemeine Frage zur Verwendung von TListbox
 
Lol,

Ihr Habt Recht. Ich habe es grad nochmal getestet. Jetzt tut es. Ich könnte schwören das es vorher nicht getan hat.

Da Frage ich mich dann immer mehr warum es die Function gibt wenn ich sie nicht brauche.

Sharky 5. Apr 2006 07:18

Re: Allgemeine Frage zur Verwendung von TListbox
 
Zitat:

Zitat von Corpsman
... warum es die Function gibt wenn ich sie nicht brauche.

Hai Corpsman,

hier mal ein mögliches Beispiel. Ich habe ein PopUp-Menü (das nicht mit der Listbox verknüpft ist!) mit einem Eintrag um etwas aus der ListBox zu löschen.
Ich möchte aber sicherstellen das beim klick mit der rechten Maustaste auch ein Item ausgewählt wird.
Genau das kann ich mit ItemAtPos sehr schön machen.

Delphi-Quellcode:
procedure TDemoForm.Delete1Click(Sender: TObject);
begin
  with ListBox1 do
  begin
    if (ItemIndex > -1) then
    begin
      Items.Delete(ItemIndex);
    end;
  end;
end;

procedure TDemoForm.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  NewItemIndex: Integer;
  MousePoint: TPoint;
begin
  if (Button = mbRight) then
  begin
    with (Sender as TListBox) do
    begin
      MousePoint.X := X;
      MousePoint.Y := Y;
      NewItemIndex := ItemAtPos(MousePoint, TRUE);
      if (NewItemIndex > -1) then
      begin
        ItemIndex := NewItemIndex;
        MousePoint := ClientToScreen(MousePoint);
        PopupMenu1.Popup(MousePoint.X, MousePoint.Y);
      end;
    end;
  end;
end;


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