![]() |
ValueListEditor - eintrag einfügen, ohne "änder"-P
Ich hoffe mal es ist verständlich :D
Und zwar habe ich eine ValueListEditor (VLE) in der von Prozedur X daten geschrieben werden. Nun möchte ich aber nicht, dass der VLE dabei die Methode auslöst, dass was geändert wurde, weil ich nur möchte, dass diese Methode ausgelöst wird, wenn der Benutzer was ändert. (Ansonsten kommt es zu einer AV :D) |
Re: ValueListEditor - eintrag einfügen, ohne "änder&
Zitat:
für mich ehrlich gesagt nicht. Zitat:
Zitat:
Wenn ich nicht die Antworten auf all diese (offenen) Fragen übersehen habe, würde ich schon sagen, dass es nicht wirklich gut verständlich ist was du möchtest. Schöner wäre es also, wenn du erstmal ausführlich erklären könntest was du machst und wo bzw. warum dabei ein Fehler auftritt. An sich wird ja irgendwas zu der AV führen, vielleicht solltest du einfach mal in der Ereignisbehandlung prüfen ob diese AV auftreten würde und ggf. eben dafür sorgen, dass das nicht passiert. Wenn du die Komponente selber schreibst und die AV daher kommt, dass zu irgendeinem Zeitpunkt die Behandlung ausgelöst wird, aber noch keine Methode zugewiesen wurde, so solltest du einfach vorher prüfen ob du einen gültigen Zeiger hast (also assigned(Zeiger)) und nur dann die Behandlung auslösen. Wenn du die Ereignisbehandlung selber setzt / diese published ist, dann kannst du in Methode X einfach die Adresse der hier aufzurufenden Methode zwischenspeichern, der Ereignisbehandlung den Wert nil geben und vor verlassen von X wieder die gespeicherte Adresse zuweisen. Gruß Der Unwissende |
Re: ValueListEditor - eintrag einfügen, ohne "änder&
Setze die Ereignisprozedur vorher auf nil und nachher weist du ihr wieder die OnChange-Prozedur zu:
Delphi-Quellcode:
OnChange wird nur ausgelöst, wenn man direkt etwas in das Edit eingibt. Wird Text über die Schaltfläch eingefügt, wird OnChange nicht ausgelöst.
procedure TForm1.Edit1Change(Sender: TObject);
begin ShowMessage(Edit1.Text); end; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.OnChange := nil; Edit1.Text := 'Hänschen Klein'; Edit1.OnChange := Edit1Change; end; |
Re: ValueListEditor - eintrag einfügen, ohne "änder&
...oder du nutzt...
Delphi-Quellcode:
... folge ist die methode...
procedure machvieledingeinternmitmeinemvle;
begin valuelisteditor1.Strings.BeginUpdate; valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.EndUpdate; end;
Delphi-Quellcode:
wird nur einmal aufgerufen....du könntest natürlich noch ein flag setzen...
procedure TForm1.ValueListEditor1StringsChange(Sender: TObject);
begin showmessage('änderung'); end;
Delphi-Quellcode:
var flagkeinonchangeweilinternverarbeitung:boolean;
procedure machvieledingeinternmitmeinemvle; begin flagkeinonchangeweilinternverarbeitung:=true; valuelisteditor1.Strings.BeginUpdate; valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.Add('schlüssel=wert'); valuelisteditor1.Strings.EndUpdate; flagkeinonchangeweilinternverarbeitung:=false; end; procedure TForm1.ValueListEditor1StringsChange(Sender: TObject); begin if flagkeinonchangeweilinternverarbeitung then exit; showmessage('änderung'); end; |
Re: ValueListEditor - eintrag einfügen, ohne "änder&
Zitat:
Zitat:
-> Forensuche => Es ist eine Dlephikomponente, seit längeren (D6/7 mind.) Prozedur X ist eine externe Prozedur. => Eine Prozedur die innerhalb der Form ist, aber nicht vom VLE ausgelöst wurde. Zitat:
Die Sachlage ist ganz einfach: Zitat:
|
Re: ValueListEditor - eintrag einfügen, ohne "änder&
Zitat:
Also wenn ich da ein paar Sätze mehr, deren Nutzen und die benötigte Zeit (oder was auch immer) gegeneinander abwäge, .... Zitat:
Na ja, jedenfalls ist mir jetzt deutlich klarer wo eigentlich genau das Problem liegt und andere die ein gleiches Problem haben werden es vielleicht auch so sehen. Lösungen wurden schon genug vorgeschlagen. Gruß Der Unwissende |
Re: ValueListEditor - eintrag einfügen, ohne "änder&
Sry @ Unwissende, aber ich verstehe nicht, was daran so weichtig ist, dass du weißt wann/wo diese Prozedur X aufegrufen wird.
Das Problem liegt auch anscheinend nicht in diese Prozedur, sondern in einer anderen. PS: Ich hasse es mit TD zu debuggen :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 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