Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi nonVCL: Selektierung in Dialogbox entfernen, aber wie? (https://www.delphipraxis.net/69030-nonvcl-selektierung-dialogbox-entfernen-aber-wie.html)

agapanthus 9. Mai 2006 13:02


nonVCL: Selektierung in Dialogbox entfernen, aber wie?
 
Guten Tag!

Meine Frage heute: Wie entferne ich die Selektierung eines Textes in einem Edittext einer Dialogbox?

Zu den Details:

Ich habe eine Dialogbox, die aus folgendem Resourcefile (Auszug) erzeugt wird.
Delphi-Quellcode:
100 DIALOG DISCARDABLE 0, 0, 296, 347
STYLE DS_NOFAILCREATE | DS_CENTER | WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "iNetStop2 Konfiguration"
FONT 8, "MS Sans Serif"
BEGIN
    LTEXT          "ini-File:",IDC_STATIC,12,13,45,8
    EDITTEXT       312,59,10,223,12,ES_AUTOHSCROLL | ES_READONLY
Ich öffne die Dialogbox mit
Delphi-Quellcode:
DialogBox(hInstance,MAKEINTRESOURCE(100),0,@dialogProc)
und setze in der Dialogprozedur den Text des Editfeldes:
Delphi-Quellcode:
WM_INITDIALOG:
   begin
     SetWindowText(GetDlgItem(hwndDlg,IDC_INI_FILE),pChar(winPath + '\' + INIFILE));
Nach dem Öffnen der Dialogbox ist das Feld (es ist das erste in der Dialogbox) mit meinem gewünschten Text gefüllt, der ist aber selektiert - was ich nicht will. Wie schaffe ich es, daß der Text nicht mehr selektiert ist? Meine Versuche und die Suche nach einer Lösung waren bisher nicht erfolgreich, mit
Delphi-Quellcode:
EnableWindow(GetDlgItem(hwndDlg,IDC_INI_FILE),FALSE);
kann ich zwar das Feld "disablen", dann kann man aber weder scrollen (falls der Text länger als das Feld ist) noch den Text kopieren, weil er nicht mehr selektierbar ist...


Vielen Dank für Eure Antworten
Gruß Frank

turboPASCAL 9. Mai 2006 13:18

Re: nonVCL: Selektierung in Dialogbox entfernen, aber wie?
 
Wenn du einen Button auf dem Dialog hast könntest du ihn als "Default" markieren, somit erhäli er den Fokus. Gff. den Tabindex (Reihenfolde zw. dem BEGIN und END).

Es gibt auch noch den Parameter ES-NOHIDSEL.

agapanthus 9. Mai 2006 13:33

Re: nonVCL: Selektierung in Dialogbox entfernen, aber wie?
 
Hallo und danke...
Zitat:

Zitat von turboPASCAL
den Tabindex (Reihenfolde zw. dem BEGIN und END).

Das hat geholfen.

Gruß Frank

himitsu 9. Mai 2006 14:18

Re: nonVCL: Selektierung in Dialogbox entfernen, aber wie?
 
Die Ursache ist einfach, dat automatisch (wenn nichts anders angegeben wird) immer das erste Objekt fokusiert und wenn möglich dessen Inhalt selektiert wird.
DieLösung war also einfach nur die Reinfolge zu ändern, oder ein "anders" Objekt zu bestimmen, welches fokusiert werden soll ^^

agapanthus 9. Mai 2006 14:45

Re: nonVCL: Selektierung in Dialogbox entfernen, aber wie?
 
Hallo.
Zitat:

Zitat von himitsu
Die Lösung war also einfach nur die Reinfolge zu ändern

Ich hab auch mal kurzzeitig dran gedacht, einfach die Reihenfolge zu ändern. Das schien mir dann aber doch viel zu simpel, als daß ich es probiert hätte. Nun ist mein "Abbrechen"-Button der erste...

Danke nochmal,
Gruß Frank

P.S. Das Ergebnis meiner Delphibemühungen ist übrigens da zu finden - wenn im Moment auch noch ohne die letzten Änderungen... (Kommentare erwünscht ;-))

turboPASCAL 10. Mai 2006 08:32

Re: nonVCL: Selektierung in Dialogbox entfernen, aber wie?
 
Schaut schon mal gut aus. Wenn du dein Programm vorstellen möchtest, um zB. eine Resonanz zu erhalten gibt es hier eine Freeware-Sparte.
Erstelle dort einen neuen Beitrag und du bekommst deine Kommentare. ;)


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