Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Focus für Form aktivieren bzw. deaktivieren (https://www.delphipraxis.net/196583-focus-fuer-form-aktivieren-bzw-deaktivieren.html)

Graw 1. Jun 2018 07:20

Focus für Form aktivieren bzw. deaktivieren
 
Hallo,

ich habe ein Tool, auf dem ich mit Button Daten an die aktuelle Cursorposition schreibe.
Das bedeutet zum Beispiel, ich habe in Excel eine Zelle angewählt, klicke dann auf den Button und der Focus bleibt auf der Zelle in Excel und Daten werden in diese Zelle geschrieben.

Ermöglicht hat mir dies die folgende Funktion:
Code:
procedure TForm4.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
   Params.ExStyle := Params.ExStyle + WS_EX_NOACTIVATE;

end;
Nun habe ich das Tool um ein Eingabefeld erweitert...
Das ist natürlich schlecht, weil ich auf dem Eingabefeld kein Focus habe und somit keine Daten in das Eingabefeld eintrage kann.

Mein gedanke war nun das ich die Parameter immer dann aktiviere wenn ein Button gedrückt wird und danach wieder deaktiviert wird.
Leider stehe ich hier gerade auf dem Schlauch und weiß nicht wie ich das am besten machen kann.

Hier brauch ich einmal einen Denkanstoß.

Vielen Dank schonmal im voraus.

bernau 1. Jun 2018 08:58

AW: Focus für Form aktivieren bzw. deaktivieren
 
Eventuell mit OnActiveControlChange das letzte aktive Control merken. Dann weist du, wohin du mit dem Button springen kannst. Oder mit drücken der Entertaste im TEdit springst du zurück in das entsprechende Control was vorher aktiviert war. (Nur so ne Idee. Selber nicht getestet)

Der schöne Günther 1. Jun 2018 09:52

AW: Focus für Form aktivieren bzw. deaktivieren
 
Du kannst doch dein
Delphi-Quellcode:
WS_EX_NOACTIVATE
auch direkt über
Delphi-Quellcode:
SetWindowLongPtr(WindowHandle, GWL_EXSTYLE, deinExStyle)
nachträglich steuern. Ich würde das entweder im OnOnter/OnExit des Edit-Felds und/oder einen separaten Toggle-Button machen.

Graw 1. Jun 2018 10:56

AW: Focus für Form aktivieren bzw. deaktivieren
 
Vielen Dank für die Antworten.
@Der schöne Günther hat mir die passende Idee geliefert.

Ich habe es nun so gelöst das ich beim MouseEnter bei den Buttons WS_EX_NOACTIVATE mache und bei MouseLeave es wieder deaktiviere.

:thumb::thumb::thumb::thumb::thumb:

HolgerX 1. Jun 2018 11:42

AW: Focus für Form aktivieren bzw. deaktivieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hmm..

Oder Du vergisst diese ganzen Active-Spielerreien auf deinem Formular und machst es anders:

Wenn deine App Activiert wird, dann merkst Du Dir, welches die letzte App war und auf deinem Button Click werden die Daten aus deinem Edit dort eingetragen.

Hab mal ein Quick and Dirty Beispiel angehängt.

(Erstellt mit D6, Getestet auf W7 mit Notepad und Wordpad als Ziel)

Graw 6. Jun 2018 13:26

AW: Focus für Form aktivieren bzw. deaktivieren
 
Hallo,

jetzt hat sich die ganze Sache doch noch ein wenig geändert.
Der Kunde wünscht das meine Softwrae als Fullscreenanwendung läuft.

Das bedeutet für mich das meine Anwendung in ein im Hintergrund laufendes Programm die Daten einfügen muss.

Noch mal als Beispiel:

- Excelmappe sit offen
- meine Software wird geöffnet
- Durch Tastendruck wird in die Excelmappe geschrieben ohne das meine Software im Vordergrund verschwindet


Ist das möglich?

EWeiss 6. Jun 2018 13:39

AW: Focus für Form aktivieren bzw. deaktivieren
 
HWND_TOPMOST
falsch verstanden.. sorry

gruss

Jumpy 6. Jun 2018 14:25

AW: Focus für Form aktivieren bzw. deaktivieren
 
Zitat:

Zitat von Graw (Beitrag 1404048)
Hallo,

jetzt hat sich die ganze Sache doch noch ein wenig geändert.
Der Kunde wünscht das meine Softwrae als Fullscreenanwendung läuft.

Das bedeutet für mich das meine Anwendung in ein im Hintergrund laufendes Programm die Daten einfügen muss.

Noch mal als Beispiel:

- Excelmappe sit offen
- meine Software wird geöffnet
- Durch Tastendruck wird in die Excelmappe geschrieben ohne das meine Software im Vordergrund verschwindet


Ist das möglich?

Wenn es nur um Excel geht, kannst du dir das doch mit Get(Ole?)Object (im Gegensatz zu Create(Ole?)Object) holen und in die Active Zelle schreiben.
Problem ist nur, wenn du mehrere Excel-Instanzen offen hast (heutzutage zwar schwieriger zu bewerkstelligen), weißte evtl. nicht welche du bekommst.

HolgerX 6. Jun 2018 14:26

AW: Focus für Form aktivieren bzw. deaktivieren
 
Hmm..

Zitat:

Zitat von Graw (Beitrag 1404048)
Noch mal als Beispiel:

- Excelmappe sit offen
- meine Software wird geöffnet
- Durch Tastendruck wird in die Excelmappe geschrieben ohne das meine Software im Vordergrund verschwindet


Wenn es 'nur' um Excel geht, dann google mal nach Excel + OLE.

Damit kann deine Anwendung sich mit einem offenen Excel 'verbinden' und dort gezielt hineinschreiben, ohne den ganzen Tastensenden Kram..

Graw 6. Jun 2018 15:13

AW: Focus für Form aktivieren bzw. deaktivieren
 
Excel habe ich hier nur als Beispiel genommen.
Es geht bei dem Kunden um eine SAP Eingabemaske.

Trotzdem Danke.


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