AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi OnChange bei programmierten Komponenten?
Thema durchsuchen
Ansicht
Themen-Optionen

OnChange bei programmierten Komponenten?

Ein Thema von hobbyloser · begonnen am 17. Jul 2003 · letzter Beitrag vom 8. Okt 2003
Antwort Antwort
Seite 1 von 2  1 2      
hobbyloser

Registriert seit: 19. Jun 2003
11 Beiträge
 
#1

OnChange bei programmierten Komponenten?

  Alt 17. Jul 2003, 00:29
Hi @all!
Bin nicht gerade der Delphiheld, deshalb hätte ich mal eine kleine Frage.

Wenn ich auf einem Formular einige Textfelder während der Laufzeit erstelle, wie kann ich dann eine Prozedur schreiben, die ausgelöst wird, wenn man etwas in diese Textfelder reinschreibt? (also onChange Ereignis...)
Hab das mal irgendwie so versucht..
Code:
procedure TEdit(Findcomponent('txtIrgendwas')).OnChange(Sender);
begin
//Code...
end;
und dann noch viel in der Art, doch irgendwie war das alles falsch wer kann mir helfen??

(...und lacht mich nicht aus.. *g*)
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: OnChange bei programmierten Komponenten?

  Alt 17. Jul 2003, 00:38
Du darfst dazu einen eigenen Namen für die Prozedur erfinden wie z.B. "MeineEditsWurdenVeraendert" aber besser ist dann doch "EditChanged".

Delphi-Quellcode:
TForm1 = class(TForm)
...
private
  procedure EditChanged(Sender: TObject);
end;


procedure TForm1.EditChanged(Sender: TObject);
begin
  MachWas;
end;


procedure TForm1.FormCreate(Sender: TObject);
var Edit: TEdit;
begin
  // Edits werden hier erzeugt.
  Edit := TEdit.Create(Self);
  Edit.Parent := Self;
 // Eventhandler zuweisen:
  Edit.OnChange := EditChanged;
end;
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: OnChange bei programmierten Komponenten?

  Alt 17. Jul 2003, 00:38
Ups. Da hab ich wohl doppelt geklickt.
  Mit Zitat antworten Zitat
hobbyloser

Registriert seit: 19. Jun 2003
11 Beiträge
 
#4

Re: OnChange bei programmierten Komponenten?

  Alt 17. Jul 2003, 01:27
dankeschööööön
  Mit Zitat antworten Zitat
hobbyloser

Registriert seit: 19. Jun 2003
11 Beiträge
 
#5

Re: OnChange bei programmierten Komponenten?

  Alt 20. Sep 2003, 00:38
ich möchte nochmals was ähnliches machen, auch mit programmierten Komponenten, nur sollte die prozedur noch parameter enthalten, also etwas in der Art:
Delphi-Quellcode:
...
private
  procedure Anzeigen(x: integer);
end;

procedure TForm2.Anzeigen(x: integer);
begin
  showmessage(inttostr(x));
end;

procedure TForm2.Button1Click(Sender: TObject);
var Edit: TEdit;
begin
  Edit := TEdit.Create(Self);
  Edit.Parent := Self;
  Edit.OnChange := Anzeigen(12);
end;
Hab schon viel versucht, doch immer Fehlermeldungen in diesem Stil erhalten:
[Fehler] Unit2.pas(266): Inkompatible Typen: 'TNotifyEvent' und 'procedure, untyped pointer or untyped parameter'

kann mir jemand helfen? was mache ich falsch? thx!!
Greetz
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: OnChange bei programmierten Komponenten?

  Alt 20. Sep 2003, 00:46
Moin Hobbyloser,

OnChange ist von Typ TNotifyEvent.
Wenn Du nun also eine Prozdure (besser Methode) zuweisen willst muss sie den gleichen Aufbau haben, also in diesem Falle einen Parameter vom Typ TObject.

Da Deine Methode Anzeigen, aber einen Integer als Parameter hat kannst Du die nicht als OnChange benutzen.
Würde auch keinen Sinn machen, da ja der Sender automatisch gefüllt wird, nämlich mit der Kompo, die das Ereignis auslöst, wenn Du die Routine nicht "von Hand" aufrufst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
hobbyloser

Registriert seit: 19. Jun 2003
11 Beiträge
 
#7

Re: OnChange bei programmierten Komponenten?

  Alt 20. Sep 2003, 01:00
ööööööhm...
kapiere ich jetzt nicht ganz!

d.h. ich kann nicht eine Methode aufrufen, die zum Beispiel (ein besseres Beispiel als oben..) beim Klick auf einen programmierten Button dessen Caption ausgibt?

(MyButton.OnClick -> showmessage(TButton(Findcomponent('Button1')).capt ion) oder nach diesem Prinzip?

oder könntest du mir mal ein Beispiel posten..
danke!

grüsse
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: OnChange bei programmierten Komponenten?

  Alt 20. Sep 2003, 01:06
Moin Hobbyloser,

der Aufbau, also die Parameter müssen übereinstimmen.
Was Du dann in der Prozedur machst spielt keine Rolle.

TNotifyEvent ist ja so deklariert:

type TNotifyEvent = procedure (Sender: TObject) of object; Ergo: Die Methode muss eine Prozedur sein, und genau einen Parameter vom Typ TObject haben.

Du könntest also schreiben:

Delphi-Quellcode:
TForm1 = class(TForm)
//...
  procedure MeineClickRoutine(MeinParameter : TObject);
//...
end;

var
  Form1: TForm1;
  MeinButton : TButton;

implementation
 
procedure TForm1.MeineClickRoutine(MeinParameter : TObject);
begin
  ShowMessage('Hallo');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MeinButton := TButton.Create(self);
  MeinButton.OnClick := MeineClickRoutine;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
hobbyloser

Registriert seit: 19. Jun 2003
11 Beiträge
 
#9

Re: OnChange bei programmierten Komponenten?

  Alt 20. Sep 2003, 01:29
hallo,

das ist ok.
Aber ich brauche ja zum Beispiel die Caption das Buttons, der gedrückt wurde, und nicht Hallo.

Man kann ja nicht sender.caption anstatt 'Hallo' oder ähnlich verwenden, um den Wert zu bekommen.

Sonst ists egal, ich versuche es irgendwie anders
danke für die Umstände.

grüsse
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: OnChange bei programmierten Komponenten?

  Alt 20. Sep 2003, 01:35
Moin Hobbyloser,

Zitat von Hobbyloser:
Man kann ja nicht sender.caption anstatt 'Hallo' oder ähnlich verwenden, um den Wert zu bekommen.
Im Prinzip schon, Du musst den Sender nur richtig auswerten:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Sender is TButton) then begin
    ShowMessage((Sender as TButton).Caption);
  end;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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