![]() |
AW: OnChangeValue ?
ja übrigens das fehlt noch :
Delphi-Quellcode:
TMeineKlasse = class private fBWStellung: Integer; //Hier ist der Wert gespeichert fOnValueChange :TNotifyEvent; procedure setBWStellung(const value: Integer); //function getBWStellung:Integer; public //BWStellung steht für Eigenschaft von fBWStellung Property BWStellung :Integer read fBWStellung write SetBWStellung; property OnValueChange: TNotifyEvent read FOnValueChange write FOnValueChange; end; // setBWStellung :Setter ist eine Methode um in fBWStellung zu schreiben //fBWStellung kann nur über das propperty ändern var Form2: TForm2; MeineKlasse: TMeineKlasse; fBWStellung :integer; ActiveImage :TImage; F_KeyA :boolean; procedure OptionFehlt; implementation usw. |
AW: OnChangeValue ?
Akurka, tut mir leid, aber ich geb's hier auf. Offenbar fehlen mir noch weitere Informationen, um dein Problem richtig zu verstehen. Es gibt hier zahlreiche berufenere Geister als mich, die dir sicher gerne weiterhelfen werden.
|
AW: OnChangeValue ?
Hallo Perlsau
ja ok, ich meine ich habe mein Problem genügend erklärt (siehe Antwort an Dich und Dejan Vu), vollständigkeits halber zitiere ich es noch einmal : Zitat:
was dem Polling eigentlich gleich kommt, ist das nicht so ? Nun ich verstehe, dass Du genug hast Dich mit OOP Anfänger zu plagen. Trotzdem vielen Dank für Deine Hilfe, ich habe wieder einiges gelernt. Gruss Anton |
AW: OnChangeValue ?
Lies dir mal
![]() Da geht es auch um ein TNotifyEvent und wie man eine entsprechende Prozedur definiert, erzeugt und benutzt. Oder informiere dich einmal zum Stichwort "Methodenzeiger". Musst du eigentlich mehrere verschiedene Werte überwachen (du würdest dann für jeden ein entsprechendes Objekt von TMeineKlasse brauchen) oder geht es nur um einen Wert? Im letzteren Fall könntest du dir den ganzen Aufwasch ja sparen und mit einer Variablen + Setter + Property direkt in Form2 arbeiten. |
AW: OnChangeValue ?
Zitat:
Du möchtest einen Event... Aber wo soll der den her kommen? Wer soll den auslösen? Wie pollst Du den? Du Fragst doch sicherlich etwas ab... Oder? Gibt es einen Trigger der RS232 Routine, nach dem Motto "Neue Daten da"? Das wäre eine Event... Auf den kannst Du reagieren, dann den Wert abfragen und gut ist. Kein Pollen mehr... Mavarik |
AW: OnChangeValue ?
So wäre das im Ansatz richtig:
Delphi-Quellcode:
Nun müsstest du uns nur noch die Stelle zeigen, wo du das machst:
procedure TForm2.MenueCreate(Sender: TObject);
begin keypreview := True; ActiveImage := Image1; Self.ClientWidth := 512; Self.ClientHeight := 256; Self.Image1.Width := 511; Self.Image1.Height := 255; F_obereAchsen := False; F_KeyA := False; MeineKlasse := TMeineKlasse.Create; MeineKlasse.OnvalueChange := Self.OnValueChange; end;
Delphi-Quellcode:
MeineKlasse.BWStellung := ... // Die Zuweisung des neuen Wertes
// Das musst du ja irgendwie durch Pollen im Timer oder Thread umgesetzt haben?! |
AW: OnChangeValue ?
Hallo Jumpy
Besten Dank für Dein Tipp. Ja nach der ersten Durchsicht ist es genau das was mir fehlt. Habe es augedrückt und werde es genau studieren. Zu Deiner Frage: Ja es sind mehrere Werte aus den Meldungen die von der CNC über RS232 kommen. Die Wichtigste ist die Status.CNC Meldung(16 Byte,Array) und daraus das ZBETR(BetriebswahlSchalterStellung=BWStellung= 1 Byte). Aber es soll aber auch bei der IstWertMeldung ( Anzahl Bytes variert,je nach Anzahl Achsen,pro Achse 24bit) festgestellt werden ob sich irgend ein Istwert(24bit =>Integer) verändert hat. Jetzt mache ich es mit Polling und Vergleich AltWert <> NeuWert und nur wenn eine Aenderung da ist, wird es Angezeigt. Ziemlich umständlich und ein Resourcen Fresser. Im grossen Ganzen sind es (je nach Betriebswahl) 2 bis 4 unterschiedliche Meldungen die permanent überwacht werden müssen. Andrererseits muss ich sagen, dass die bisherige Lösung eigentlich nicht schlecht läuft. Eleganter wäre natürlich eine Lösung wie bei Tasten z.Bsp. OnKeyPress, darum meine Idee mit OnChangeValue. Nur wenn sich ein Wert ändert wird entsprechender Erreigniss ausgelöst und der Wert Angezeigt. Ob es dann weniger Rechenzeit braucht kann ich nicht beurteilen, aber ich will es probieren und testen. Gruss Anton |
AW: OnChangeValue ?
Zitat:
|
AW: OnChangeValue ?
Hallo TiGü
Besten Dank, das " MeineKlasse.OnvalueChange := Self.OnValueChange;" hat gefehlt. Ja mit der Polling, dass ist genau das Problem, das mache ich jetzt schon: Zitat:
Wird es punkto Rechenzeit überhaupt etwas bringen mit dem setter, wenn ich den Wert der Variable pollen muss ?? Gruss Anton |
AW: OnChangeValue ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 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