![]() |
Re: [Prism] Delegates von C# nach Prism übersetzen.
Okay... Ich bin durch try and error und durch deine Bemerkung mit der Methode grad drauf gekommen...
Delphi-Quellcode:
So gehts. Hab's nur nicht gleich gemerkt, weil ich versucht hab ein visuelles Objekt zu updaten.
API:= new Vertraulich;
API.Phone_GetNetState(@GetNetState_Callback); Ich weiss... Neue Frage neuer Thread. Aber vielleicht gibts ja ne ganz einfache Antwort darauf. Warum geht der Code aus GetNetState_Callback (Post #7) jetzt nicht? Messagebox geht aber obriger Code nicht ?!? Und nochwas... was ist der Reflector und wo finde ich den? Hab ein deutsches Prism - heisst der vielleicht anders oder ist das ein externes Tool? Toni |
Re: [Prism] Delegates von C# nach Prism übersetzen.
Der Reflector ist ein externes Tool und den gibts hier:
![]() Generell gilt: Zitat:
Delphi-Quellcode:
geht nicht aber:
method MainForm.GetNetState_Callback(handle: IntPtr; ret: eTYPE_RETURN; State: UInt32);
begin if State = 1 then Label8.Visible:=true else Label8.Visible:=false; end;
Delphi-Quellcode:
funktioniert?
method MainForm.GetNetState_Callback(handle: IntPtr; ret: eTYPE_RETURN; State: UInt32);
begin MessageBox.Show('State ist ' + State.ToString()); end; |
Re: [Prism] Delegates von C# nach Prism übersetzen.
Exakt...
Hatte jetzt nicht vermutet, dass das so tiefgründig war. Wär ich jetzt in Delphi32 hätte ich vermutet dass da jetzt jemand kommt und sagt: Ach, das... Mach mal ein "ProcessMessages" oder ein "Synchronize" rein, denn geht das. Könnte mir halt vorstellen, dass der Callback asynchron rein kommt und das GUI nicht updaten kann. Und da hab ich halt einfach angenommen dafür gäbs ein Patentrezept. Toni |
Re: [Prism] Delegates von C# nach Prism übersetzen.
Zitat:
Delphi-Quellcode:
method MainForm.GetNetState_Callback(handle: IntPtr; ret: eTYPE_RETURN; State: UInt32);
begin SetControlVisibility(Label8, State = 1); end; method MainForm.SetControlVisibility(ctrl: Control; newVisibilty: Boolean); begin if ctrl.InvokeRequired then begin ctrl.Invoke(method begin SetControlVisibility(ctrl, newVisibility); end); exit; end; ctrl.Visible := newVisibility; end; |
Re: [Prism] Delegates von C# nach Prism übersetzen.
Das ist exakt was ich meinte. :D
Grad fällt mir auf, dass dort noch andere Events gesynct auf der Oberfläche "herumkritzeln". Das kracht von Zeit zu Zeit. Aber Um diese Detail muss ich mich nach meinem Urlaub kümmern. Vielen Dank für die rasche Hilfe. Toni |
Re: [Prism] Delegates von C# nach Prism übersetzen.
Der Teil
Delphi-Quellcode:
Ist das pattern was man hier ansetzt. Es dürfte in ein paar Tagen auch einen Aspekt dafür geben. Dann muss man nur noch
if ctrl.InvokeRequired then
begin ctrl.Invoke(method begin SetControlVisibility(ctrl, newVisibility); end); exit; end; [Aspect:SyncWithUIThreadIfNeeded] (oder so ähnlich) über die Methodendeklaration setzen und *wuppdi* macht Cirrus das automatisch ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 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 by Thomas Breitkreuz