AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

DrawFrameControl

Ein Thema von markbolten · begonnen am 4. Mai 2009 · letzter Beitrag vom 4. Mai 2009
 
markbolten

Registriert seit: 5. Jun 2005
25 Beiträge
 
#1

DrawFrameControl

  Alt 4. Mai 2009, 08:23
Hi,
ich erstelle eine eigene Edit Komponente, in der u.a. ein Button angezeigt werden kann. Man kann die Farbe des Button ändern . Dabei tritt das Problem auf, das der Rand des Buttons, erzeugt durch DrawFrameControl, immer noch die Standardfarbe hat und nicht die Benutzerfarbe .

Delphi-Quellcode:
procedure TAdvEdit.WMPaint(var Msg: TWMPaint);
var
  DC: HDC;
  Fnt: HFont;
  point : tpoint ;
begin
  inherited;
  if FExtButton.FshowButton then
  begin
    if (not Assigned(FCanvas)) then
    begin
      FCanvas := TControlCanvas.Create;
      FCanvas.Control := Self;
    end;
    DC:=GetDC(Handle);
    FCanvas.Handle := DC;
    Fnt:=FExtButton.FbtnFont.Handle;
    SelectObject(DC,Fnt);
// SetBkMode(DC,TRANSPARENT);
    SetBkMode(DC, OPAQUE);
    CreateSolidBrush(FExtButton.FbtnColor );
    SetBkColor(DC, FExtButton.FbtnColor );
    FExtButton.BtnRect:=ClientRect;
    FExtButton.BtnRect.Left:=FExtButton.BtnRect.Right-FExtButton.fButtonWidth;
    if FExtButton.fPressed and FExtButton.fInButton then
    begin
      DrawFrameControl(DC,FExtButton.BtnRect,DFC_BUTTON,DFCS_BUTTONPUSH+
       DFCS_PUSHED);
    end
    else
    begin
      DrawFrameControl(DC,FExtButton.BtnRect,DFC_BUTTON,DFCS_BUTTONPUSH);
    end;
    if (Assigned(FExtButton.Fglyph) and (FExtButton.FGlyphindex in [0..
     FExtButton.FGlyph.Count-1])) then
    begin
      SetBkMode(DC,TRANSPARENT);
      point.X := ((FExtButton.fButtonWidth-FExtButton.
       FGlyph.width) div 2)+1;
      point.Y := (FExtButton.BtnRect.Bottom -FExtButton.BtnRect.Top-FExtButton.
       FGlyph.height) div 2;
      FExtButton.FGlyph.Draw(Fcanvas,FExtButton.BtnRect.Left+point.X ,FExtButton.
       BtnRect.Top +point.y,FExtButton.FGlyphIndex);
    end
    else
    begin
      DrawText(DC,PChar(FExtButton.fBtnCaption),Length(FExtButton.fBtnCaption),
       FExtButton.BtnRect,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
    end;
    FCanvas.Handle := 0;
// DeleteObject(Fnt);
// ReleaseDC(Handle,DC);
  end;
end;
Was habe ich nicht beachtet
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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