Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Delphi novcl button (https://www.delphipraxis.net/121841-novcl-button.html)

EWeiss 5. Okt 2008 22:02


novcl button
 
Liste der Anhänge anzeigen (Anzahl: 2)
habe einen button erstellt welcher mit einem Bitmap belegt wird
wenn ich nun auf den Button klicke kommt aber wieder der normale Button zum vorschein
Woran kann das liegen bzw.. was hab ich vergessen.


gruss Emil

turboPASCAL 6. Okt 2008 00:46

Re: novcl button
 
Zitat:

Woran kann das liegen
An tausend Dingen.

Zitat:

was hab ich vergessen
Das stückchen Code zu zeigen, welches den Button behandelt ? :gruebel:

EWeiss 6. Okt 2008 04:24

Re: novcl button
 
Zitat:

Zitat von turboPASCAL
Zitat:

Woran kann das liegen
An tausend Dingen.

Zitat:

was hab ich vergessen
Das stückchen Code zu zeigen, welches den Button behandelt ? :gruebel:

Wenn das ein bißchen wäre ;) da hängt mehr als nur eine Zeile dran.
Sonst hätte ich es hier eingefügt.

Interessieren würde mich ob ich die ID welche ich lokal definiert habe auch in der resource eintragen muss.
Seltsam nur das der erste Button BILD sichbar ist.

gruss Emil

Luckie 6. Okt 2008 08:20

Re: novcl button
 
Siehe dazu mein "Windows32-API Tutorial für Delphi" das Kapitel Button.

EWeiss 6. Okt 2008 10:08

Re: novcl button
 
Zitat:

Zitat von Luckie
Siehe dazu mein "Windows32-API Tutorial für Delphi" das Kapitel Button.

Danke Luckie das war dass erste was ich mir angeschaut habe.
Ist aber etwas komplizierter hier da ich auf alle Button Skins legen will.

da hapert es noch ein bißchen.

gruss EMil

x000x 6. Okt 2008 10:40

Re: novcl button
 
Moin moin Emil,

zeichnest du den Button selber (BS_OWNERDRAW)? Dann wäre deine Paint-Methode interessant.
... aber ohne Code ist es wirklich schwierig ...

PS: Ich hatte vor einiger Zeit auch mal einen nonVCL Button erstellt (incl. laden von JPGs)
Evtl. kannste da einige Codeschnipsel verwenden...

EWeiss 6. Okt 2008 10:53

Re: novcl button
 
Zitat:

Zitat von x000x
Moin moin Emil,

zeichnest du den Button selber (BS_OWNERDRAW)? Dann wäre deine Paint-Methode interessant.
... aber ohne Code ist es wirklich schwierig ...

PS: Ich hatte vor einiger Zeit auch mal einen nonVCL Button erstellt (incl. laden von JPGs)
Evtl. kannste da einige Codeschnipsel verwenden...

Das sieht so aus ..

Delphi-Quellcode:
function RegisterButton(ButtonClass: PAnsiChar): BOOL;
var
  IsInitialized : BOOL;
  CLASS_NAME   : PAnsiChar;

begin

    CLASS_NAME := ButtonClass;

    dlgClass.cbSize := SIZEOF(dlgClass);
    IsInitialized  := GetClassInfoEx(hInstance, ButtonClass, dlgClass);

    if not IsInitialized then
    with dlgClass do
    begin
       IsInitialized := (GetClassInfoEx(hInstance, 'BUTTON', dlgClass));
       if IsInitialized then
       begin
           ButOldProc(lpfnWndProc, 1);
           ButOldExtra(cbWndExtra, 1);
           lpfnWndProc  := @ImageButtonProc;
          // Reserviere EXTEND_EXTRA bytes zum speichern privater properties
          cbWndExtra   := cbWndExtra + (EXTEND_EXTRA * 4);
          hInstance    := GetInstance;
          lpszClassName := CLASS_NAME;
          IsInitialized := Bool(RegisterClassEx(dlgClass));
       end;
    end;
    Result := IsInitialized;

end;
Um den ganzen Code jetzt zu posten wäre etwas viel da alles noch über die Winproc läuft usw...
aber so kannst meinen ansatz sehen.

gruss Emil

EWeiss 6. Okt 2008 14:35

Re: novcl button
 
Sorry das ich jetzt nochmal poste ;)
Kommt nicht wieder vor.

Mir ist da etwas eingefallen bezüglich der button.
Ist es möglich das die nur Funktionieren wenn ein Manifest eingebunden ist ?
Also das sie beim nächsten klick nicht den Skin verlieren.

gruss Emil

Luckie 6. Okt 2008 14:56

Re: novcl button
 
Was spricht dagegen, das mal eben schnell auszuprobieren? Allerdings bin ich der Meinung, dass das manifest keine Auswirkung auf selbst gezeichnete Schaltflächen haben sollte.

x000x 6. Okt 2008 14:56

Re: novcl button
 
Moin moin Emil,

Zitat:

Zitat von EWeiss
...Ist es möglich das die nur Funktionieren wenn ein Manifest eingebunden ist ?...

Das denke ich mal nicht.

Wenn du den Button wieder loslässt, wird dann das Bitmap wieder angezeigt?
Mir ist auch nicht ganz klar, wie du das Bitmap in den Button bekommst. Zeichnest du es selber, oder
setzt du es mit dem Style BS_BITMAP?
Delphi-Quellcode:
          Style := WS_CHILD or WS_VISIBLE or WS_TABSTOP or BS_PUSHBUTTON;
          // das Window für die Button's erstellen
          hBut := CreateWindowEx(WS_EX_TRANSPARENT,
                                 BUTTONIMAGE, '',
                                 Style, x, y, btW, btH,
                                 hOwner, ButID, GetInstance, nil);
Hierbei wird ja noch kein Bitmap im Button angezeigt :gruebel:
Die ganze Paint Methode brauchst du nicht posten, interessant wäre die Stelle im Code, wo du das Bitmap setzt bzw. zeichnest.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr.
Seite 1 von 2  1 2      

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