AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi API Befehl zum ändern eines Labels im Colordialog?
Thema durchsuchen
Ansicht
Themen-Optionen

API Befehl zum ändern eines Labels im Colordialog?

Ein Thema von GeorgPeifer · begonnen am 16. Dez 2004 · letzter Beitrag vom 16. Dez 2004
Antwort Antwort
GeorgPeifer

Registriert seit: 7. Dez 2004
Ort: Kerpen
21 Beiträge
 
#1

API Befehl zum ändern eines Labels im Colordialog?

  Alt 16. Dez 2004, 12:17
ich habe dieses Thema zwar bereits im VCL-Forum gepostet. Eine Idee, wie man das Label "Benutzterdefinierte Farben" ändern kann, fehlt mir aber leider noch.

Hier ein paar Daten zu dem Label:

Bild im Anhang


Die Control ID 65535 ist allerdings offenbar unter GetDlgItem(ColorDialog1.Handle,65535) dem Label "Grundfarben" zugeordnet.

das habe ich dann wie folgt ändern können:
Code:
  SetWindowText(GetDlgItem(ColorDialog1.Handle, 65535), PChar('Basic Colors'));
Wie komme ich ich an das korrekte Handle bzw. wie ändert man den Text unter "Benutzterdefinierte Farben"?

Viele Grüße
Georg

[edit=sakura]Bild im Anhang. Mfg, sakura[/edit]
Miniaturansicht angehängter Grafiken
winspy.gif  
Georg Peifer
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#2

Re: API Befehl zum ändern eines Labels im Colordialog?

  Alt 16. Dez 2004, 15:06
Zitat von GeorgPeifer:
Die Control ID 65535 ist allerdings offenbar unter GetDlgItem(ColorDialog1.Handle,65535) dem Label "Grundfarben" zugeordnet.
Wenn du dir mit einem Resource Explorer wie ResHacker die COMDLG32.DLL anschaust, wirst du sehen das die STATIC's "Grundfarben" und "Benutzerdefinerte Farben" die Control ID -1 haben. So kommt halt der Wert 65535 zu stande.

Hab dir mal ein kleines Beispiel geschrieben wie du im OnShow Ereignis von TColorDialog die Fensterhandles ermitteln und den Text ändern kannst.

Delphi-Quellcode:
procedure TForm1.ColorDialog1Show(Sender: TObject);
const
  BASIC_COLORS = 'Basic Colors:' + #0;
  CUSTOM_COLORS = 'Custom Colors:' + #0;
var
  ChildHWnd: HWND;
begin

  // Fensterhandle für "Grundfarben" ermitteln
  // ist das erste Control auf dem Dialog
  ChildHWnd := GetWindow((Sender as TColorDialog).Handle, GW_CHILD);

  // Handle gefunden?
  if IsWindow(ChildHWnd) then
  begin

    // "Grundfarben" in "Basic Colors" ändern
    SendMessage(ChildHWnd, WM_SETTEXT, 0, Longint(PChar(BASIC_COLORS)));

    // Fensterhandle für "Benutzerdefinierte Farben" finden
    // ist das dritte Control
    ChildHWnd := GetWindow(ChildHWnd, GW_HWNDNEXT);

    // Zweites Control gefunden?
    if IsWindow(ChildHWnd) then
    begin

      // weiter machen... um drittes Control zu ermitteln
      ChildHWnd := GetWindow(ChildHWnd, GW_HWNDNEXT);

      // Handle gefunden?
      if IsWindow(ChildHWnd) then

        // "Benutzerdefinierte Farben" in "Custom Colors" ändern
        SendMessage(ChildHWnd, WM_SETTEXT, 0, Longint(PChar(CUSTOM_COLORS)));

    end; {end if}
  end; {end if}

end; {end procedure}
Getestet habe ich das nur unter Windows XP. Ich denke aber mal, das sich seit Windows 95 daran nichts geändert hat.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
GeorgPeifer

Registriert seit: 7. Dez 2004
Ort: Kerpen
21 Beiträge
 
#3

Re: API Befehl zum ändern eines Labels im Colordialog?

  Alt 16. Dez 2004, 15:36
@ Sprint funktioniert!!

jetzt muss ich nur noch raffen wie es funktioniert

Danke vielmals
Georg Peifer
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#4

Re: API Befehl zum ändern eines Labels im Colordialog?

  Alt 16. Dez 2004, 15:38
Zitat von GeorgPeifer:
jetzt muss ich nur noch raffen wie es funktioniert
Deswegen habe ich ja Kommentare in meinem Beispiel eingefügt. Was ich eigentlich nicht mache.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 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