![]() |
Grundlagennachhilfe Ereignis OnEnter
OnEnter Ereignis einer Listbox
Das Problem: Zur Laufzeit des Programms wird eine Listbox erzeugt und mit Werten gefüllt. Jetzt müßte ich das Ereignis OnEnter der Listbox auswerten, um einen ausgesuchten Wert herauszulesen. Einer bereits beim Laden des Formulars vorhandenen Listbox würde ich im ObjectInspector einfach dem Ereignis OnEnter eine Routine zuweisen. Wie geht das aber zur Laufzeit? Ich habe es zwar mit Listbox1.onEnter(Sender) := Routine versucht, aber das geht nicht. Die Syntax ist auch procedure onEnter(Sender: TObject) of object. MfG -- VolksTobi |
Re: Grundlagennachhilfe Ereignis OnEnter
Delphi-Quellcode:
So müsste es gehn. Die Procedure bei TForm1 unter public deklarieren und dann zuweisen.
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) ListBox1: TListBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } procedure DeinOnEnter(Sender : TObject); end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.DeinOnEnter(Sender : TObject); begin // schreib was rein end; procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.OnEnter := DeinOnEnter; end; end. |
Re: Grundlagennachhilfe Ereignis OnEnter
Erst mal - danke fürs Nachdenken!
Ich habe es ausprobiert: Der Compiler schlägt mit folgender Fehlermeldung zurück :( [Fehler] HProg.pas(102): E2010 Inkompatible Typen: 'TNotifyEvent' und 'procedure, untyped pointer or untyped parameter' mfg VolksTobi |
Re: Grundlagennachhilfe Ereignis OnEnter
dann wirst du wohl nicht
Delphi-Quellcode:
sondern
procedure TForm1.DeinOnEnter(Sender : TObject);
Delphi-Quellcode:
geschrieben. Also einfach die Procedure als Methode eines Objectes declarieren.
procedure DeinOnEnter(Sender : TObject);
|
Re: Grundlagennachhilfe Ereignis OnEnter
Ich habe die Syntax hinbekommen. Sie war genauso wie beschrieben. Ich konnte aber das Ereignis OnEnter nicht auswerten (falls jemand weiß warum, würde mich interessieren).
Meine Lösung sieht jetzt so aus:
Delphi-Quellcode:
Gruß -- VolksTobi
.....
LBox1.OnKeyUp := LBox1KeyUp; ...... procedure TForm1.LBox1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); var vbefehl: String; begin if (Key = VK_RETURN) and (Shift = []) then begin LBox1 := TListbox(Sender); vBefehl := ''; if (LBox1.Items.Count > 0) then begin vBefehl := BoxAuswahl(LBox1); .... [edit=Luckie]Benutz das nächste mal Bitte [ delphi]-Tags. Danke. Mfg, Luckie[/edit] |
Re: Grundlagennachhilfe Ereignis OnEnter
Hai VolksTobi,
in deinem Code arbeitest Du doch mit dem OnKeyUp Ereigniss. Was hat das denn mit dem urspünglich gefragten OnEnter zu tun? ;-) Beschreibe doch einmal was Du machen möchtest. Ich habe das Gefühl das Du da etwas Grundlegendes falsch verstanden hast :stupid: |
Re: Grundlagennachhilfe Ereignis OnEnter
Hallo Sharky,
Zitat:
Wann verwendet man denn nun das OnEnter - Ereignis. In diesem Fall wie ich gemerkt habe offensichtlich nicht. Gruß -- VolksTobi Entschuldige Luckie - ich hatte die Buttons nicht beachtet, bin erst wenige Tage hier vertreten! :duck: |
Re: Grundlagennachhilfe Ereignis OnEnter
Hat dein Delphi keine Hilfe?
:coder2: OnEnter hat nix mit der Enter Taste zu tun. Es wird ausgelöst wenn das Steuerelement den Focus erhält. |
Re: Grundlagennachhilfe Ereignis OnEnter
Liste der Anhänge anzeigen (Anzahl: 1)
Hai VolksTobi,
ich habe mal ein Beispiel getippelt wie ich es lösen würde. Natürlich müsstest Du das füllen der ListBox noch anpassen ;-) |
Re: Grundlagennachhilfe Ereignis OnEnter
Hallo Sharky,
erst mal vielen Dank für den Quellcode. Interessant war für mich, wie oft Du Sender einsetzt. Damit stehe ich noch etwas auf Kriegsfuß. Aber solche Dinge kann man nach einem 12 Wochen (!!) - Lehrgang noch nicht erwarten. Literaturstudium wirds richten. Eine Sache ist mir etwas unklar geblieben. Ich hatte händeringend nach einem Ereignis gesucht, innerhalb dessen ich die Listbox zerstören kann.
Delphi-Quellcode:
Da hier ja nicht das Formular geschlossen wird, nehme ich an, das hängt mit dem Assignet zusammen. Die Delphi-Hilfe ist da etwas wenig verständlich (für mich). Obwohl es ganz hervorragend funktioniert. :o
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin if Assigned(LBox1) then FreeAndNil(LBox1); end; Gruß -- VolksTobi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 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