![]() |
Button in Caption von ToolWin
Hi,
Ich habe Glscene in D2005PE per Package/Komponente ... eingebunden, der GlSceneEditor (ToolWin) verdeckt nun immer die Delphi IDE. Um das zu verhindern möchte ich ein Minimize Btn einbauen. (1) Wie bekommt man einen Button (z.B. SpeedBtn) in die Caption einer Form? (2) Wollte das die Form autom. aufklappt. Bei meiner Lösung flackert die Form wenn ich über die Buttons oder Panels usw. mit der Maus "surfe" ?
Delphi-Quellcode:
:wall:
...
public { Public-Deklarationen } Procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; Procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; end; ... procedure TForm1.CMMouseEnter(var Message: TMessage); begin if form1.Height <> 260 then form1.Height := 260; end; procedure TForm1.CMMouseLeave(var Message: TMessage); begin if form1.Height <> 1 then form1.Height := 1; end; |
Re: Button in Caption von ToolWin
Hi,
Du solltest Dir die ![]() Zur Größenbegrenzung dürfte für Dich ![]() Dann musst Du die Position nicht beim MouseEnter / MouseLeave abfragen und Delphi übernimmt die Verwaltung automatisch. mfG mirage228 |
Re: Button in Caption von ToolWin
Moin, Moin!
@mirage228 danke für Antwort, Der Minimieze Btn is ja eingebaut und tut auch das was er soll (halt nur nicht in der verflixten Caption), ebenso läuft ja auch schon das automatische aufklappen / zuklappen des GL-Editorfensters (Toolpalette wie zB. bei Paint Shop Pro ) problemlos nur das wenn man über den Rand der Buttons, Splitter oder ToolBar mit der Maus fährt flackert das. Ist halt ein unschöner Effekt. |
Re: Button in Caption von ToolWin
Liste der Anhänge anzeigen (Anzahl: 1)
Sodele,
Button in der Caption (mit kleiner Macke bei Mouseover).
Delphi-Quellcode:
Source Code im Anhang
...
procedure TForm1.DrawTitleBtnRect(BtnPos: Byte; btnState: TBtnState); var cXFrame, cYFrame, ccBorder: Integer; // Rahmendicke cxSize, cySize: Integer; // Hoehe & Breite der Buttons in der Titelleiste Bitmap: TBitmap; // Btn Bitmap x: TBitmap; // *** Bitmap begin if Self.BorderStyle in [bsNone] then Exit; // No Frame no Button if Self.BorderStyle in [bsSizeToolWin, bsToolWindow] then begin // small Button Grösse ermitteln cxSize := GetSystemMetrics(SM_CXSMSIZE) - 2; // -2 Btn-Rand cySize := GetSystemMetrics(SM_CYSMSIZE) - 2; // -2 Btn-Rand end else begin // Button Grösse ermitteln cxSize := GetSystemMetrics(SM_CXSIZE) - 2; // -2 Btn-Rand cySize := GetSystemMetrics(SM_CYSIZE) - 2; // -2 Btn-Rand end; // Rändergrössen der Frame ermitteln if Self.BorderStyle in [bsToolWindow] then ccBorder := 0 else ccBorder := GetSystemMetrics(SM_CXBORDER); if Self.BorderStyle in [bsDialog, bsSingle] then begin // normal Frame cXFrame := GetSystemMetrics(SM_CXDLGFRAME) + ccBorder; cYFrame := GetSystemMetrics(SM_CYDLGFRAME) + ccBorder; end else begin // sizeable Frame cXFrame := GetSystemMetrics(SM_CXSIZEFRAME) + ccBorder; cYFrame := GetSystemMetrics(SM_CYSIZEFRAME) + ccBorder; end; // Button Rect BtnCaptionRect := Bounds((Self.Width - cXFrame) - (BtnPos * cxSize), cYFrame, cxSize, cySize); Canvas.Handle := GetWindowDC(Self.Handle); //Get Device for drawing try Bitmap := TBitmap.Create; // *** Bitmap File laden x := TBitmap.Create; x.LoadFromFile('btn_up_over_down_XP.bmp'); Bitmap.Width := cxSize; Bitmap.Height:= cxSize; // Abfragen des Btn Status / Btn vom x-Bitmap ins Bitmap kopieren if btnUp in btnState then begin Bitmap.Canvas.CopyRect(Rect(0,0,cxSize,cxSize), x.Canvas, Rect(0,0,23,23)); end else if btnDown in btnState then begin Bitmap.Canvas.CopyRect(Rect(0,0,cxSize,cxSize), x.Canvas, Rect(23+23,0,23+23+23,23)); end else if btnOver in btnState then begin Bitmap.Canvas.CopyRect(Rect(0,0,cxSize,cxSize), x.Canvas, Rect(23,0,23+23,23)); end else if btnInActive in btnState then begin end; // Btn Transparent ? if btnTransparent in btnState then begin Bitmap.Transparent := True; Bitmap.TransParentColor := clFuchsia; end; // Btn Stretchen ? if btnStretch in btnState then Canvas.StretchDraw(BtnCaptionRect, Bitmap) else Canvas.Draw(BtnCaptionRect.Left, BtnCaptionRect.Top, Bitmap); finally ... ... end; end; ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 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