AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Letztes Sender-Object merken u. Action manuell aufrufen
Thema durchsuchen
Ansicht
Themen-Optionen

Letztes Sender-Object merken u. Action manuell aufrufen

Ein Thema von Everun · begonnen am 20. Jul 2006 · letzter Beitrag vom 20. Jul 2006
Antwort Antwort
Everun

Registriert seit: 20. Jul 2006
2 Beiträge
 
#1

Letztes Sender-Object merken u. Action manuell aufrufen

  Alt 20. Jul 2006, 20:31
Hallo Forum,

folgendes Situation:

Ich habe mehrere Objekte (Edit-Felder), die alle eine onChange-Funktion ausführen. Klappt auch prima.

Jetzt möchte ich folgendes Erreichen: Das Objekt, welches zuletzt ein onChange ausgeführt hat, soll gemerkt werden und die dazugehörige onChange-Methode von einem anderen Programmteil aus ausgeführt werden.

Ich habe bereits eine Variable als TObject definiert, mit welchen ich mir den Sender merken kann, aber ich bekomme es irgendwie nicht hin, daß davon dann die onChange aufgerufen wird.

Hier mal im Groben ein zusammengefaßter Quellcode

Code:
// ...

var
  last_change: TObject;

// ...

procedure TForm1.Edit1Change(Sender: TObject);
begin
  last_change := Sender;
  // do something ...
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
  last_change := Sender;
  // do something ...
end;

procedure TForm1.Edit3Change(Sender: TObject);
begin
  last_change := Sender;
  // do something ...
end;

// ...

procedure TForm1.ButtonClick(Sender: TObject; Button: TUDBtnType);
begin
  // do something ...

  // !!!!!!!!!!!!!!!!!!!!!
  // Hier soll die Change-Methode des Objektes 'last_change'
  // zur Aktualisiserung aufgerufen werden
  // !!!!!!!!!!!!!!!!!!!!!
end;

// ...
Ich hab schon mit diversen ExecuteAction-Konstrukten herum experimentiert, aber wie schon gesagt, ich bekomme es irgendwie nicht hin. Hat jemand einen Rat für mich?

Vielen lieben Dank im Vorraus
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Letzes Sender-Object merken u. Action manuell aufrufen

  Alt 20. Jul 2006, 20:41
Moin Everun,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Da sehe ich zwei Möglichkeiten:

Du machst einen Typecast:

Delphi-Quellcode:
  (last_change as TEdit).OnChange(Sender);
  // oder
  (last_change as TEdit).OnChange(nil);
oder aber, Du nimmst als Typ nicht TObject, sondern gleich TEdit.

Ausserdem sollte die Variable auf nil initialisiert werden.
Dann kannst Du vor deren Verwendung in der Button-Click-Routine prüfen, ob denn überhaupt schon ein TEdit zugewiesen wurde.
Ansonsten fängst Du Dir beim Anklicken des Buttons eine AV ein.

Zudem könntest Du die Variable gleich als Feld im Formular unterbringen.

Delphi-Quellcode:
  TForm1 = class(TForm)
  //...
  private
    FLastChange : TEdit;
  end;
und dann im OnCreate des Formulares initialisieren.
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
Everun

Registriert seit: 20. Jul 2006
2 Beiträge
 
#3

Re: Letztes Sender-Object merken u. Action manuell aufrufen

  Alt 20. Jul 2006, 23:00
Zitat von Christian Seehase:
erst einmal herzlich willkommen hier in der Delphi-PRAXiS.
och ich les schon ne Weile mit.
Nur bei diesem speziellen Problem hat mit die Suche einfach nicht mehr weiter geholfen

(wie formuliert man so ein Problem auch für die Suchabfrage?)

Zitat von Christian Seehase:
Du machst einen Typecast:

Delphi-Quellcode:
  (last_change as TEdit).OnChange(Sender);
  // oder
  (last_change as TEdit).OnChange(nil);
oder aber, Du nimmst als Typ nicht TObject, sondern gleich TEdit.

Ausserdem sollte die Variable auf nil initialisiert werden.
Dann kannst Du vor deren Verwendung in der Button-Click-Routine prüfen, ob denn überhaupt schon ein TEdit zugewiesen wurde.
Ansonsten fängst Du Dir beim Anklicken des Buttons eine AV ein.

Zudem könntest Du die Variable gleich als Feld im Formular unterbringen.
ok, diese Sachen haben mir geholfen, das Problem zu lösen. Mein Aufruf lautet übrigens

  (last_change as TEdit).OnChange(last_change); (nicht der Sender mußte übergeben werden, sondern das davor benutzte Objekt)


Wie schon gesagt, vielen Dank für die Hilfe
Leider ist mein Delphiwissen noch nicht so ganz ausgeprägt.
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:06 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