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 OnClick bei Listbox (https://www.delphipraxis.net/39523-onclick-bei-listbox.html)

Hansa 3. Feb 2005 21:44


OnClick bei Listbox
 
Hi,

was passiert mit dem OnClick bei einer Listbox ? Ich habe eine Listbox und will Werte durch anklicken in ein Label übertragen. In der Listbox passiert beim anklicken aber nichts. Nicht mal eine showmessage wird angezeigt. Was ist das ? :shock:

Markus 3. Feb 2005 21:49

Re: OnClick bei Listbox
 
Also wenn ich bei mir ein Item anklicke, wird das Event schon ausgelöst. Es passiert nur nichts, wenn ich ins "leere" klicke...

Hansa 3. Feb 2005 22:00

Re: OnClick bei Listbox
 
Klasse Hinweis. :thumb: Obwohl ? Das "Leere" wäre auch noch zu überlegen. :mrgreen: Wenn also einer nur die richtige Zeile erwischt. Wenn das das angesprochene Leere sein sollte. :zwinker:

Markus 3. Feb 2005 22:11

Re: OnClick bei Listbox
 
Hallo,

also im Moment verstehe ich nicht ganz was du willst. Ich dachte, dass bei dir das onClick-Event nicht richtig ausgelöst wird, deshalb auch meine Antwort.

Wenn ich den angeklickten Wert in einer Listbox in ein Label übertragen will, dann mache ich das so:

Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
var i: integer;
begin
  for i := 0 to ListBox1.Count - 1 do
    if ListBox1.Selected[i] then label1.Caption := Listbox1.Items[i];
end;

Muetze1 3. Feb 2005 22:30

Re: OnClick bei Listbox
 
Moin!

Der o.g. Code ist MultiSelect tauglich und zeigt dabei nur das letzte selektierte Element in dem Label an. Wenn du kein MultiSelect verwendest, dann reicht es auch ItemIndex zu nutzen....

Delphi-Quellcode:
Procedure TForm1.ListBox1Click(Sender: TObject);
Begin
  If ( ListBox1.ItemIndex > -1 ) Then
    Label1.Caption := ListBox1.Items[ ListBox1.ItemIndex ];
End;
MfG
Muetze1

Hansa 3. Feb 2005 23:53

Re: OnClick bei Listbox
 
Es geht darum, daß eben überhaupt nichts geschieht. Siehe hier :

Delphi-Quellcode:
procedure Tfrm.lbDblClick(Sender: TObject);
begin
showmessage ('ÄÖÄÖÄ');
  inherited;
  edNr.Text := copy (lb.Items [lb.itemindex],1,5);
  lblBez.Caption := '('+copy (lb.Items [lb.itemindex],8,25)+')';
  lb.Hide;
  btnZeige.Hide;
  edNr.SetFocus;
end;
Warum kommt die showmessage nicht ? Darum gehts. Das drumrum ist egal.

Minz 4. Feb 2005 01:20

Re: OnClick bei Listbox
 
Check doch mal das OnClick-Ereignis...

da kommt bestimmt was...

Hansa 4. Feb 2005 01:37

Re: OnClick bei Listbox
 
Was habe ich denn sonst gemacht ? Das dblClick in dem Beispiel hat nichts zu sagen. Wahrscheinlich weiß eh keiner, was das ist inkl. mir. :mrgreen:

Thorben86 4. Feb 2005 02:33

Re: OnClick bei Listbox
 
Also ich habe mal deinen code bei mir getestet in d7, und bei mir hat alles geklappt.
Hast du noch was bei einfachem klick? Vielleicht behindert das das ausführen, oder das sonst irgendeine andere aktion bei irgend einer aktion auf er listbox etwas ausführt, wodurch dein code übergangen wird (z.b. es nie zu einem doppelklick sondern immer nur zu einem einfachen klick kommt.) Ich weis nicht, ob du denen code schon mal in den Teil geschrieben hast, der bei einfachem klick ausgelöst wird also unter:
Code:
procedure TForm1.lbClick(Sender: TObject);
Aber dann könnteste testen, ob das nur bei doppelklick nicht klappt, ob die klick-aktion insgesammt übergangen wird.

Hansa 4. Feb 2005 03:15

Re: OnClick bei Listbox
 
Zitat:

Zitat von Thorben86
Aber dann könnteste testen, ob das nur bei doppelklick nicht klappt, ob die
klick-aktion insgesammt übergangen wird.

Der Doppelklick kam dadurch ins Spiel, weil der einfache nicht geklappt hat. Das ist alles. Effekt war aber derselbe, also keine Reaktion. Das ganze kommt aber an einer Stelle, die wirklich jetzt sehr komplex ist und sehr tief im Programm drin steckt und somit sehr schwer zu lokalisieren.

Wie es aussieht läuft das auf einen bloßen Tipfehler hinaus. Deshalb habe ich kurzerhand alles gelöscht, was im Zusammenhang steht. Leider betrifft es 3 Listboxen und und. Die erste ist wieder fertig und geht auch. Ist halt viel Handarbeit, aber es nützt ja sonst nichts.

Jetzt ist allerdings noch ein Nebeneffekt aufgetaucht und ich traue mich nicht, wieder da rumzufummeln. Never change a running System. :mrgreen: Titel paßt auch immer noch. :P

Ist die Listbox geöffnet und hat den Focus (oder hat die keinen ?), dann geht es doch, einen Anfangsbuchstaben einzugeben, um einen Eintrag zu selektieren. Wenn ich also einen Eintrag mit 8 anklicke, dann müßte man doch mit 88 einen anderen auswählen können, oder ?

tommie-lie 4. Feb 2005 11:38

Re: OnClick bei Listbox
 
Zitat:

Zitat von Hansa
Das ganze kommt aber an einer Stelle, die wirklich jetzt sehr komplex ist und sehr tief im Programm drin steckt und somit sehr schwer zu lokalisieren.

Also meine Events von grafischen Controls sind nie so tief im Programm drin, daß ich Probleme nicht lokalisieren kann :gruebel:

Zitat:

Zitat von Hansa
Wie es aussieht läuft das auf einen bloßen Tipfehler hinaus.

Wie kommst du darauf? Dann hätte der Compiler gemeckert, wenn du dich irgendwo vertippt hättest, es sei denn du hast Funktionsnamen, die so ähnlich sind, daß sie sich durch vertippen austauschen lassen und eine gleiche Signatur haben. Hooks oder so hast du nicht registriert, und du hast auch dran gedacht, die Events auch zuzuweisen?

Zitat:

Zitat von Hansa
Ist die Listbox geöffnet und hat den Focus (oder hat die keinen ?), dann geht es doch, einen Anfangsbuchstaben einzugeben, um einen Eintrag zu selektieren. Wenn ich also einen Eintrag mit 8 anklicke, dann müßte man doch mit 88 einen anderen auswählen können, oder ?

Nein, der automatische Tastendruck funktioniert nur mit dem ersten Buchstaben. Wenn du mehr willst, musst du's dir über OnKeyPress und einen internen String selbst schreiben.

Jens Schumann 4. Feb 2005 11:58

Re: OnClick bei Listbox
 
Hallo Hansa,
Deine Problembeschreibung klingt wirklich etwas mysteriös. Ich habe noch nie davon gehört, dass das OnClick-Event einer TListbox nicht feuert wenn alles korrekt implementiert ist.
Ich kann das Problem aber reproduzieren:
Ich habe eine TListbox auf ein Formular gesetzt. Dann habe ich einen ShowMessage Aufruf in den OnClick Handler geschrieben. Wie erwartet wurde ShowMessage aufgerufen. (Das funktioniert sogar schon seit Delphi 1 :stupid: ). Wenn ich jetzt aber im Objektinspektor die TListbox auswählen und auf der Eigenschaftsseite für das OnClick-Event den dort angezeigten Handler entfernen (einfach auf Entf drück) reagiert die TListbox nicht mehr auf Mausklicks.
Kann es sein, dass Du versehentlich den Verweis auf den Event-Handeler im OI gelöscht hast?

Hansa 4. Feb 2005 13:43

Re: OnClick bei Listbox
 
Zitat:

Zitat von Jens Schumann
...Kann es sein, dass Du versehentlich den Verweis auf den Event-Handeler im OI gelöscht hast?

Ja, ich vermute auch so was in der Richtung. Allerdings eher, daß der Verweis nicht gelöscht wurde, sondern, daß ich im OI die falsche Prozedur erwischt habe. Insofern steht im OnClick sehr wohl was (sogar ähnliches) drin, aber eben doch das falsche. Denkbar wäre auch, daß ich etwas falsch kopiert habe. Und Tommie, ja so was fällt bei mir auch unter die Kategorie Tipfehler. Und zwar sind das die schlimmsten, weil der Compiler eben nicht meckert. Und was ich mit tief im Programm drin meine, das ist, weil es viele Vorfahr-Formulare gibt und ich befürchtete, daß der Fehler irgendwo vorher schon eingebaut war. Ich habe das jetzt überprüft und die Listboxen sind nicht betroffen. Deshalb habe ich die jetzt mitsamt den zugehörigen Buttons und Labels gelöscht und lege alles neu an. Was solls.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 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 by Thomas Breitkreuz