Einzelnen Beitrag anzeigen

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