AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Code strukturieren! Wie macht man es richtig ..
Thema durchsuchen
Ansicht
Themen-Optionen

Code strukturieren! Wie macht man es richtig ..

Ein Thema von EWeiss · begonnen am 10. Okt 2008 · letzter Beitrag vom 16. Okt 2008
 
EWeiss
(Gast)

n/a Beiträge
 
#37

Re: Code strukturieren! Wie macht man es richtig ..

  Alt 14. Okt 2008, 02:06
Nochmal zur vervollständigung
Meine Klasse
Delphi-Quellcode:
unit uImageButton;

interface
uses Windows, Classes, Messages;

type
  TSkinImageButton = class
  private
    FHImageButton : HWND;
    Img : Cardinal;
    Style : DWORD;
    btW : Integer;
    btH : Integer;
    function GetHandle: Integer;
  public
    property ButtonHandle: Integer read GetHandle;
    constructor Create(hOwner : HWND; FullPathImageName: PAnsiChar;
      x ,y, ButID, StateMax: Integer);
    destructor Destroy; override;

  end;

implementation
uses uSkin;

// Erstelle einen image button
constructor TSkinImageButton.Create;
begin

    with SkinEngine do
    begin
      if RegisterButton(SKBUTIMAGE) then
      begin
        // Erstelle das GDIPLUS image vom Dateinamen
        Img := AddResource((FullPathImageName));
        if Img <> 0 then
        begin
          GetImageSize(Img, imgW, imgH);
          // Wird kein StateMax angegeben sind die Bilder im Bild 5 Frames
          // ansonsten werden sie durch die übergebene anzahl geteilt
          if StateMax < 1 then
            StateMax := 5;
          btW := integer(imgW) div StateMax;

          btH := imgH;
          Style := WS_CHILD or WS_VISIBLE or WS_TABSTOP or BS_PUSHBUTTON;
          if ButID = ID_LED then
            Style := Style or WS_DISABLED;

          // das Window für die Button's erstellen
          FHImageButton := CreateWindowEx(WS_EX_TRANSPARENT, SKBUTIMAGE, '',
            Style, x, y, btW, btH, hOwner, ButID, sInstance, nil);
          if FHImageButton <> 0 then
          begin
            // Speichere das Img handle als property
            SetImageProperty(FHImageButton, PROP_IMAGE, integer(Img));
            SetImageProperty(FHImageButton, PROP_STYLE, BS_BITMAP);
            SetImageProperty(FHImageButton, PROP_STATEMAX, StateMax);
          end else
          begin
            // Lösche das Image
            DeleteResource(Img);
          end;
        end;
      end;
    end;
end;

destructor TSkinImageButton.Destroy;
begin
  // tue nix
  // das löschen aller resourcen wird an anderer stelle ausgeführt
  // Sample:
    {SkinEngine.RemoveAllImageResource;
     SkinEngine.DestroyWindowResource(WinHandle);}


  inherited Destroy;
end;

function TSkinImageButton.GetHandle: Integer;
begin
  Result := FHImageButton;
end;

end.
Die wird als uses in uSkin eingebunden
uses uImageButton;
Die Controls sollen nur aus dieser Klasse heraus verwaltet werden.
Was ich damit meine ist ich will sie nicht nochmal zusätztlich in der MainUnit mit einbinden
wie muss ich die Klasse dann in uSkin einbinden damit ich nur über die Engine auf das Control zugreifen kann.

Zur zeit läuft es so
Delphi-Quellcode:
  BugButton: TSkinImageButton;
  PlayButton: TSkinImageButton;
  LeftButton: TSkinImageButton;
  RightButton: TSkinImageButton;
  HelpButton : TSkinImageButton;
geht aber nur wenn ich, wie schon gesagt die uImageButton in uMainApp mit einbinde.

gruss Emil
  Mit Zitat antworten Zitat
 


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 09:04 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