123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- unit GUIControls;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, JvJVCLUtils, JvComponent, JvDockControlForm, JvExControls,
- ExtCtrls, JvOutlookBar, ImgList;
- type
- TfrmGUIControls = class(TForm)
- jvGUIControls: TJvOutlookBar;
- JvDockClient1: TJvDockClient;
- imlControls: TImageList;
- procedure jvGUIControlsCustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; AStage: TJvOutlookBarCustomDrawStage; AIndex: Integer; ADown, AInside: Boolean; var DefaultDraw: Boolean);
- procedure FormCreate(Sender: TObject);
- procedure jvGUIControlsPageChange(Sender: TObject; Index: Integer);
- private
- { Private declarations }
- procedure btnXControlClick(Sender: TObject);
- procedure CreateList();
- public
- { Public declarations }
- end;
- var
- frmGUIControls: TfrmGUIControls;
- implementation
- {$R *.dfm}
- procedure TfrmGUIControls.jvGUIControlsCustomDraw(Sender: TObject; ACanvas: TCanvas; ARect: TRect; AStage: TJvOutlookBarCustomDrawStage; AIndex: Integer; ADown, AInside: Boolean; var DefaultDraw: Boolean);
- var
- pImage: TBitmap;
- begin
- DefaultDraw := False;
- case AStage of
- odsBackground:
- // Draw the background
- GradientFillRect(ACanvas, ARect, clBtnFace, clBtnFace, fdTopToBottom, 255);
- odsPage:
- // Draw the page
- GradientFillRect(ACanvas,ARect, clBtnFace, clBtnFace, fdTopToBottom, 255);
- odsPageButton:
- begin
- // Draw the page button
- GradientFillRect(ACanvas,ARect, clBtnFace, clBtnFace, fdTopToBottom, 255);
- if ADown then
- OffsetRect(ARect,1,1);
- Frame3D(ACanvas, ARect, clBtnHighlight, clBtnShadow, 2);
- ACanvas.Font.Color := clBlack;
- ARect.Left := ARect.Left + 18;
- DrawText(ACanvas.Handle, PChar(' '+jvGUIControls.Pages[AIndex].Caption), Length(jvGUIControls.Pages[AIndex].Caption)+1, ARect, DT_SINGLELINE or DT_VCENTER or DT_LEFT);
- end;
- odsButton:
- begin
- // Draw small button image if required
- if jvGUIControls.ActivePage.Buttons[AIndex].ImageIndex <> -1 then
- begin
- pImage := TBitmap.Create;
- imlControls.GetBitmap(jvGUIControls.ActivePage.Buttons[AIndex].ImageIndex, pImage);
- pImage.Transparent := True;
- pImage.TransparentColor := pImage.Canvas.Pixels[0, 0];
- pImage.TransparentMode := tmAuto;
- ACanvas.Draw(ARect.Left + 1, ARect.Top + 3, pImage);
- pImage.Free;
- end;
- // Draw the button
- ACanvas.Font.Color := clBlack;
- ARect.Left := ARect.Left + 17;
- DrawText(ACanvas.Handle, PChar(' '+jvGUIControls.ActivePage.Buttons[AIndex].Caption), Length(jvGUIControls.ActivePage.Buttons[AIndex].Caption)+1, ARect, DT_SINGLELINE or DT_VCENTER or DT_LEFT or DT_MODIFYSTRING or DT_END_ELLIPSIS);
- end;
- odsButtonFrame:
- begin
- // Draw button frame according to its down value (this is called if the button is down or if the mouse is over)
- if ADown then
- Frame3D(ACanvas, ARect, clBtnShadow, clBtnHighlight, 2)
- else
- Frame3D(ACanvas, ARect, clBtnHighlight, clBtnShadow, 2);
- end;
- end;
- end;
- procedure TfrmGUIControls.jvGUIControlsPageChange(Sender: TObject; Index: Integer);
- begin
- jvGUIControls.Pages[Index].DownIndex := 0;
- end;
- procedure TfrmGUIControls.btnXControlClick(Sender: TObject);
- var
- btnSender: TJvOutlookBarButton;
- begin
- btnSender := TJvOutlookBarButton(Sender);
- btnSender.Down := True;
- end;
- procedure TfrmGUIControls.CreateList();
- // This method add a button to the controls list
- procedure AddOBButton(pOnClick: TNotifyEvent; iPageIndex: Integer; iImageIndex: Integer; sCaption: String; bDown: Boolean = False; bEnabled: Boolean = True);
- var
- jvOBBtn: TJvOutlookBarButton;
- begin
- jvOBBtn := jvGUIControls.Pages[iPageIndex].Buttons.Add();
- jvOBBtn.Caption := sCaption;
- jvOBBtn.ImageIndex := iImageIndex;
- jvOBBtn.Down := bDown;
- jvOBBtn.Enabled := bEnabled;
- jvOBBtn.OnClick := pOnClick;
- end;
- begin
- // Create standard controls...
- AddOBButton(btnXControlClick, 0, 0, 'Select', True);
- AddOBButton(btnXControlClick, 0, 1, 'Label');
- AddOBButton(btnXControlClick, 0, 2, 'Button');
- AddOBButton(btnXControlClick, 0, 3, 'Edit');
- AddOBButton(btnXControlClick, 0, 4, 'CheckBox');
- AddOBButton(btnXControlClick, 0, 5, 'RadioButton');
- // Create additional controls...
- AddOBButton(btnXControlClick, 1, 0, 'Select', True);
- AddOBButton(btnXControlClick, 1, 6, 'Image');
- end;
- procedure TfrmGUIControls.FormCreate(Sender: TObject);
- begin
- CreateList();
- end;
- end.
|