Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Grundlagennachhilfe Ereignis OnEnter (https://www.delphipraxis.net/41978-grundlagennachhilfe-ereignis-onenter.html)

VolksTobi 11. Mär 2005 14:02


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

Neutral General 11. Mär 2005 14:10

Re: Grundlagennachhilfe Ereignis OnEnter
 
Delphi-Quellcode:
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.
So müsste es gehn. Die Procedure bei TForm1 unter public deklarieren und dann zuweisen.

VolksTobi 11. Mär 2005 15:38

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

SirThornberry 11. Mär 2005 16:01

Re: Grundlagennachhilfe Ereignis OnEnter
 
dann wirst du wohl nicht
Delphi-Quellcode:
procedure TForm1.DeinOnEnter(Sender : TObject);
sondern
Delphi-Quellcode:
procedure DeinOnEnter(Sender : TObject);
geschrieben. Also einfach die Procedure als Methode eines Objectes declarieren.

VolksTobi 14. Mär 2005 19:45

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:
     .....
 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);
          ....
Gruß -- VolksTobi

[edit=Luckie]Benutz das nächste mal Bitte [ delphi]-Tags. Danke. Mfg, Luckie[/edit]

Sharky 14. Mär 2005 20:15

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:

VolksTobi 14. Mär 2005 22:31

Re: Grundlagennachhilfe Ereignis OnEnter
 
Hallo Sharky,

Zitat:

Ich habe das Gefühl das Du da etwas Grundlegendes falsch verstanden hast
ich fürchte, damit hast Du nicht ganz unrecht. Wenn Du Dir vorstellen willst, was ich vorhabe, brauchst Du nur die Borland IDE zu nehmen. Ich lese aus einem Memo das letzte Wort und suche damit in einer Datenbank. Das Ergebnis lese ich in eine Listbox ein, die zur Laufzeit erzeugt wird. Ein Eintrag wird markiert und mit Enter ausgewählt, anschließend in das Memo eingetragen. Die Listbox wird danach zerstört.

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:

Quake 15. Mär 2005 06:21

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.

Sharky 15. Mär 2005 07:35

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 ;-)

VolksTobi 15. Mär 2005 22:45

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:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Assigned(LBox1) then FreeAndNil(LBox1);
end;
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

Gruß -- VolksTobi


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 Uhr.
Seite 1 von 2  1 2      

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