Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Listview vsList Multiselect bei RDP (https://www.delphipraxis.net/207633-listview-vslist-multiselect-bei-rdp.html)

Thomasl 16. Apr 2021 12:17

Listview vsList Multiselect bei RDP
 
Delphi XE4

Folgendes Problem
Listview:
ViewStyle = vsList
MultiSelect = true
Ein paar Items Hinzufügen

Programm im RemoteDesktop (RDP) verwenden
mehrere Items auswählen
RemoteDesktop schießen und neu Verbinden
Die Ausgewählten Items sind jetzt andere, z.B nur noch das Erste von den vorher gewählten
Es wird kein OnChange Event ausgelöst.

Hat jemand das gleiche verhalten schon beobachtet?

rwalper 16. Apr 2021 13:13

AW: Listview vsList Multiselect bei RDP
 
Ähnliche Probleme mit RDP sind schon länger bekannt, beim Reconnect der Verbindung wird für alle Fenster deiner Anwendung RecreateWnd aufgerufen. Damit werden z.B. die Fensterhandles neu erzeugt usw.

Ein Versuch wäre es Wert, die CreateWnd-Prozedur deiner TForm zu überschreiben:
Delphi-Quellcode:
procedure TDeinForm.CreateWnd;
begin
  inherited;
  if csRecreating in ControlState then
  begin
    // z.B. die Selektion wiederherzustellen
  end;
end;
Alternativ könnte dir vielleicht der folgende Link weiterhelfen:
https://blogs.embarcadero.com/de/how-to-speed-up-remote-desktop-applications/

Thomasl 16. Apr 2021 15:01

AW: Listview vsList Multiselect bei RDP
 
Danke für die schnelle Antwort

Das csRecreating ist bei mir nicht gekommen (im MainForm)
Die Auswahl im Listview stelle ich jetzt bei "WTS_SESSION_UNLOCK" wieder her


Delphi-Quellcode:
procedure TFormMain.WTS_SessionWndProc(var Message: TMessage);
begin
  if Message.Msg = WM_WTSSESSION_CHANGE then
  begin
    case Message.wParam of
      WTS_SESSION_LOCK,
      WTS_REMOTE_DISCONNECT: DoHandleRDPLock;
      WTS_REMOTE_CONNECT,
      WTS_SESSION_UNLOCK: DoHandleRDPUnLock;
    end;
  end;
  Message.Result := DefWindowProc(FMethodWnd, Message.Msg, Message.WParam, Message.LParam);
end;

KodeZwerg 16. Apr 2021 15:06

AW: Listview vsList Multiselect bei RDP
 
man könnte auch ein dynamisches record array erstellen mit inhalt der listview und checkedstates, bei bedarf wieder hochpumpen.

Thomasl 16. Apr 2021 15:37

AW: Listview vsList Multiselect bei RDP
 
Mir fehlte nur das Event, wann ich wiederherstellen muss.

Die Procedure um die Selected wiederherstellen hatte ich schon.

TurboMagic 16. Apr 2021 16:35

AW: Listview vsList Multiselect bei RDP
 
Ich glaube, dass in 10.4.2 in bezug auf RDP ein paar Verbesserungen drin sind...
...evtl. mag ja Herr Eissing Werbung dafür machen ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 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