AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TMS AdvEdit OnChange

Ein Thema von hhcm · begonnen am 27. Jan 2020 · letzter Beitrag vom 28. Jan 2020
Antwort Antwort
Seite 1 von 2  1 2   
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
309 Beiträge
 
Delphi 11 Alexandria
 
#1

TMS AdvEdit OnChange

  Alt 27. Jan 2020, 08:43
Hallo zusammen,

seit dem letzen TMS Update wurde das verhalten des TMS AdvEdit verändert.
Bisher war es so, dass OnChange aufgerufen wurde wenn man z.B FloatValue verändert hat. Das wurde jetzt entfernt.
Der TMS Support nennt es

Zitat:
It was an inconsistency discovered and we think the right thing to do is fix an inconsistency.
Für uns bedeutet das verdammt viel Arbeit. Da das ganze im Setter einer Propertys passiert, kann ich auch keine eigene Ableitung erstellen.
Hat jemand eine Idee wie man (ohne 20 Programme durchsuchen zu müssen) das ganze umgehen könnte?
Chris
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TMS AdvEdit OnChange

  Alt 27. Jan 2020, 08:49
Hallo,
wenn Die den Quellcode hast, ändere es doch wieder zurück.
Heiko
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
309 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TMS AdvEdit OnChange

  Alt 27. Jan 2020, 08:50
Jedes mal wenn TMS ein Update rausbringt? Nein Danke !!!
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.977 Beiträge
 
Delphi 12 Athens
 
#4

AW: TMS AdvEdit OnChange

  Alt 27. Jan 2020, 09:41
Du willst also das Change-Event ausführen, wenn FloatValue etwas zugewiesen wird?

Ein möglicher Ansatz wäre ein Class Helper for TAdvEdit, der das FloatValue Property neu einführt und einen entsprechenden Setter implementiert. Du musst dann nur überall wo FloatValue zugewiesen wird den Class Helper im näheren Scope haben (also dessen Unit passend in die Uses-Clause platzieren).
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
309 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TMS AdvEdit OnChange

  Alt 27. Jan 2020, 09:47
Du willst also das Change-Event ausführen, wenn FloatValue etwas zugewiesen wird?
Ja, denn so war es vor dem Update. Es ist ja auch in einem normalen TEdit der Fall wenn ich .Text zuweise wird OnChange aufgerufen.


Zitat:
Ein möglicher Ansatz wäre ein Class Helper for TAdvEdit, der das FloatValue Property neu einführt und einen entsprechenden Setter implementiert. Du musst dann nur überall wo FloatValue zugewiesen wird den Class Helper im näheren Scope haben (also dessen Unit passend in die Uses-Clause platzieren).
Da wird mir wohl nichts anderes übrig bleiben. Ich könnte auch alles in .Value umbenennen, was wiederum .Text zuweist, da funktioniert das OnChange "noch". Es ist jetzt nicht das erste mal das TMS solche Änderungen bringt die eine komplette Anwendung lahm legen.
Chris
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.097 Beiträge
 
Delphi 12 Athens
 
#6

AW: TMS AdvEdit OnChange

  Alt 27. Jan 2020, 16:55
PS: Das ist auch der Grund, warum sich viele Entwickler alle Komponenten nochmal ableiten, selbst wenn sie (noch) nichts geändert haben.

Später kann man dann Problemlos in dieser Ableitung rumfummeln und es ist überall drin.



Beim ClassHelper, wenn du eine Methode überdeckst, dann muß der Scope überall stimmen.
Besser dort die Methode/Property anders benennen, damit wird dann überall definitiv deine Überladung verwendet,
auch wenn man hier dann erstmal alle Stellen finden und ebenfalls anpassen muß, aber wenn der Helper fehlt, dann knallt der Compiler dort,
anstatt still und heimlich doch die Originalmethode aufzurufen.



ClassHelper oder Ableitung (egal ob gleicher ClassName oder ein Neuer) wären die einzigen wirklich praktikablen Lösungen.
Leider kann der TVirtualMethodInterceptor nur alle virtuellen Methoden überschreiben, anstatt nur eine Gewünschte (was dann schon etwas langsam wird), aber im Notfall gibt es auch andere Methoden eine Methode zu hooken.

PS: Nimm dir mal eine neue Form, mit einem Edit drauf und weise in einem Button-OnClick dessen .Text etwas zu.
Und nun pack diese Klasse vor deine TForm1-Implementation. (oder in eine Unit und diese als Letzte ins USES)
Delphi-Quellcode:
type
  TEdit = class(StdCtrls.TEdit)
    function GetText: TCaption;
    procedure SetText(const Value: TCaption);
  public
    property Text read GetText write SetText; // überdecken, weil nicht Virtual die blöden Getter und Setter
  end;

{
//uses StrUtils;

function TEdit.GetText: TCaption;
begin
  Result := ReverseString(inherited Text);
end;

procedure TEdit.SetText(const Value: TCaption);
begin
  inherited Text := ReverseString(Value);
end;
}
Hier muß die neue Klasse für einen Bugfix nicht in der IDE registriert sein (DesignTimePackage) und auch nicht in allen Forms ersetzt werden, sondern der DFM-Loader ersetzt erst zur Laufzeit diese Komponente. (der verwendet zum Erstellen die Deklatation, bzw. den Typ der Komponenten, welche er in seiner Form-Deklaration findet)


In deinem Fall also den Setter von FloatValue überschreiben oder überdecken und dort dann OnChange aufrufen, bzw. die Methode ausführen, in der OnChange aufgerufen wird (z.B. beim TEdit siehe TCustomEdit.Change).



Eventuell könntest du dich auch an Events wie WM_SETTEXT hängen, auf eine Änderung readieren und OnChange aufrufen (aber du erwischst hier eventuell auch andere Stellen, wo bereits OnChange ausgelöst wird, womit das dann doppelt wäre)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (27. Jan 2020 um 17:08 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TMS AdvEdit OnChange

  Alt 27. Jan 2020, 17:38
Hallo,
Zitat:
Jedes mal wenn TMS ein Update rausbringt? Nein Danke !!!
Warum nicht?

Ich habe mir übrigens angewöhnt, nicht so häufig TMS-Updates anzutun ...

Meine 3 eigenen Patches im TAdvStringgrid friemele ich dann immer wieder rein.
Heiko
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
309 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TMS AdvEdit OnChange

  Alt 27. Jan 2020, 19:03
Warum nicht?
Ich versuche gerade den Witz darin zu finden, kann ihn aber nicht finden.
Chris
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: TMS AdvEdit OnChange

  Alt 27. Jan 2020, 20:28
Hallo,
das ist kein Witz.
Immerhin kennst du ja die Fehler/Unzulänglichkeiten.

Wir haben sogar eine Update-Anweisung, die genau beschreibt,
wie unsere Patches eingespielt werden müssen.
Schade, aber ist leider so.

Wie oft macht ihr denn TMS-Updates?
Heiko

Geändert von hoika (27. Jan 2020 um 21:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.977 Beiträge
 
Delphi 12 Athens
 
#10

AW: TMS AdvEdit OnChange

  Alt 27. Jan 2020, 21:08
Immerhin kennst du ja die Fehler.
Streng genommen ist es ja wohl gar kein Fehler, sondern as designed. Halt nur anders als früher.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:24 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