Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ohne Fremdkomponente Button in die Formleiste bringen (https://www.delphipraxis.net/34414-ohne-fremdkomponente-button-die-formleiste-bringen.html)

Nicodius 22. Nov 2004 22:19


Ohne Fremdkomponente Button in die Formleiste bringen
 
wie kann ich ohen Fremdkomponente einen button neben dem "X" positionieren bzw mehrere Buttons an beliebigen positionen beim formcaption?


mit freundlichen Grüßen (@stan und natürlich ROTFRONT)

Nico

Sprint 22. Nov 2004 22:24

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
In der JVCL ist eine Komponente die auch mit Theme unter XP funktioniert. Kannst dir ja mal den SourceCode dazu anschauen.

Nicodius 22. Nov 2004 22:30

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
ja aber ich bin kein jedi fan bei mir funzt das nie :(

--> ich habs also nicht mehr oben ich hatte die komponente ja aber nach 2-3 tagen gehen meine Fremdkompos allesamt nicht mehr :?


egal


vl wäre wer so nett mri den quellcode zu schicken :love:

Sprint 22. Nov 2004 22:45

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
Brauchst dir die ja die JVCL nicht installieren. Reicht ja wenn du dir die Unit JvCaptionButton anschaust.

DaFox 22. Nov 2004 23:10

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
Hi!

Delphi-Quellcode:
// ...
private
  procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPaint;
// ...
procedure TForm1.WMNCPaint(var Msg: TWMNCPaint);
begin
  inherited;
  // mit GetWindowDC() DC von Form holen
  // mit GetSystemMetrics() Größe des Buttons ermitteln (SM_CXSIZE, SMCYSIZE)
  // Button zeichnen, bspw. mit DrawEdge oder per Resource
end;
Gruß,
Markus

PS: Ungetestet. :)

Luckie 22. Nov 2004 23:42

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
WM_NCPAINT ist aber nur eine von wenigen Nachrichten, die man abfangen muss. Hier noch mal ein Beispiel, um den Text der Fenstercaption zu zentrieren: http://www.luckie-online.de/Delphi/S...M_NCPAINT.html

Hier im Forum, muss auch irgendwo Code von mir rumschwieren, wie man es mit einem Button macht.

Nicodius 23. Nov 2004 05:59

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
danke erstmal


jo luckie, könntest du mir den Link posten?

danke

Luckie 23. Nov 2004 06:11

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
Ich müsste sleber suchen.

Nicodius 23. Nov 2004 08:13

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
och bitte mach das


mitten i munterricht schreib ich diese nachricht wir machen grad wieder word ^^

Luckie 23. Nov 2004 08:20

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
Gut: Hier im Forum suchenWM_NCPAINT. Mann!!!

Nicodius 23. Nov 2004 08:42

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
danke es geht ja :mrgreen:

stoxx 28. Nov 2004 02:52

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
Zitat:

wie kann ich ohen Fremdkomponente einen button neben dem "X" positionieren bzw mehrere Buttons an beliebigen positionen beim formcaption?
hast Du es nun hinbekommen ???
Bei Jedi sind nämlich 2 Demos dazu dabei, einmal die Jedi Komponente und dann eine Demonstration ohne diese in der Datei Capbtn.pas

Aber die Komponente kannst Du auch sehr einfach OHNE installation benutzen.
Du nimmst Dir
JvCaptionButton.pas
JvWndProcHook.pas

JvComponent.pas
JVCLVer.pas

und noch JVCL.inc
und JEDI.inc

Eigentlich brauchst Du nur die oberen beiden, aber wegen MPL Lizenz, Versionsunterschiede und so..
Dann legst Du ein neues Projekt an, mit folgendem Quellcode .., und das wars..
Danach hast Du Deinen Button oben in der Titelleiste.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, JvCaptionButton, ExtCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    CaptionButton1: TJvCaptionButton;

   // procedure CaptionButton1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
   // procedure CaptionButton1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure CaptionButtonONClick(Sender : TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CaptionButtonONClick(Sender: TObject);
begin
 showmessage('Hallo');
end;


//////////////////////////////////////////////////////////////////////////

procedure TForm1.FormCreate(Sender: TObject);
begin
 CaptionButton1 := TJVCaptionButton.Create(self);
 Captionbutton1.OnClick := CaptionButtonONClick;

 captionbutton1.ButtonLeft := 200;

 captionbutton1.Caption := '1';
end;

//////////////////////////////////////////////////////////////////////////



end.
viele Grüße

Nicodius 28. Nov 2004 07:26

Re: Ohne Fremdkomponente Button in die Formleiste bringen
 
danke nochmals ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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