jvcllaz: Add TJvPanel (and related infrastructure).
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7001 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
parent
6e5f190f01
commit
f9f933c01e
@ -4,10 +4,18 @@ unit JvCoreReg;
|
|||||||
|
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
procedure Register;
|
||||||
SysUtils;
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
PropEdits,
|
||||||
|
JvTypes, JvDsgnEditors;
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
begin
|
||||||
|
RegisterPropertyEditor(TypeInfo(TJvPersistentProperty), nil, '', TJvPersistentPropertyEditor);
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
932
components/jvcllaz/design/JvCore/jvdsgneditors.pas
Normal file
932
components/jvcllaz/design/JvCore/jvdsgneditors.pas
Normal file
@ -0,0 +1,932 @@
|
|||||||
|
{-----------------------------------------------------------------------------
|
||||||
|
The contents of this file are subject to the Mozilla Public License
|
||||||
|
Version 1.1 (the "License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
|
||||||
|
Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
|
||||||
|
the specific language governing rights and limitations under the License.
|
||||||
|
|
||||||
|
The Original Code is: JvDsgnEditors.PAS, released on 2002-05-26.
|
||||||
|
|
||||||
|
The Initial Developer of the Original Code is Peter Thörnqvist [peter3 att users dott sourceforge dott net]
|
||||||
|
Portions created by Peter Thörnqvist are Copyright (C) 2002 Peter Thörnqvist.
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Contributor(s):
|
||||||
|
|
||||||
|
Added editors for JvFooter and JvGroupHeader
|
||||||
|
|
||||||
|
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
|
||||||
|
located at http://jvcl.delphi-jedi.org
|
||||||
|
|
||||||
|
Known Issues:
|
||||||
|
-----------------------------------------------------------------------------}
|
||||||
|
// $Id$
|
||||||
|
|
||||||
|
unit JvDsgnEditors;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
SysUtils, Classes, PropEdits;
|
||||||
|
{
|
||||||
|
Windows, Forms, Controls, Graphics, ExtCtrls, Dialogs,
|
||||||
|
ExtDlgs, Menus, StdCtrls, ImgList, Tabs,
|
||||||
|
ImgEdit, TypInfo, DsnConst,
|
||||||
|
RTLConsts, DesignIntf, DesignEditors, DesignMenus, VCLEditors,
|
||||||
|
FiltEdit,
|
||||||
|
Classes, SysUtils;
|
||||||
|
}
|
||||||
|
|
||||||
|
type
|
||||||
|
// Special TJvPersistent property editor, that allow show event properties
|
||||||
|
// This is useful with version 5 and up --created by dejoy
|
||||||
|
TJvPersistentPropertyEditor = class(TPersistentPropertyEditor) //ComponentProperty)
|
||||||
|
private
|
||||||
|
FInstance: TPersistent;
|
||||||
|
protected
|
||||||
|
function GetInstance: TPersistent; virtual; //d5/d6
|
||||||
|
public
|
||||||
|
procedure Initialize; override; //d5/d6
|
||||||
|
function GetValue: string; override; //d5/d6
|
||||||
|
property Instance: TPersistent read GetInstance;
|
||||||
|
end;
|
||||||
|
|
||||||
|
(********************** NOT CONVERTED ****
|
||||||
|
TJvHintProperty = class(TStringProperty)
|
||||||
|
public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
procedure Edit; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvFilenameProperty = class(TStringProperty)
|
||||||
|
protected
|
||||||
|
procedure OnDialogShow(Sender: TObject); virtual;
|
||||||
|
function GetFilter: string; virtual;
|
||||||
|
function GetOptions: TOpenOptions; virtual;
|
||||||
|
public
|
||||||
|
procedure Edit; override;
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
function GetValue: string; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvExeNameProperty = class(TJvFilenameProperty)
|
||||||
|
protected
|
||||||
|
function GetFilter: string; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvDirectoryProperty = class(TStringProperty)
|
||||||
|
public
|
||||||
|
procedure Edit; override;
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
function GetValue: string; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvStringsProperty = class(TStringProperty)
|
||||||
|
public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
procedure Edit; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvBasePropertyEditor = class(TDefaultEditor)
|
||||||
|
protected
|
||||||
|
procedure EditProperty(const Prop: IProperty; var Continue: Boolean); override;
|
||||||
|
function GetEditPropertyName: string; virtual; abstract;
|
||||||
|
public
|
||||||
|
procedure ExecuteVerb(Index: Integer); override;
|
||||||
|
function GetVerb(Index: Integer): string; override;
|
||||||
|
function GetVerbCount: Integer; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvStringsEditor = class(TJvBasePropertyEditor)
|
||||||
|
protected
|
||||||
|
function GetEditPropertyName: string; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvItemsEditor = class(TJvBasePropertyEditor)
|
||||||
|
protected
|
||||||
|
function GetEditPropertyName: string; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvDateTimeExProperty = class(TDateTimeProperty)
|
||||||
|
public
|
||||||
|
procedure Edit; override;
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvDateExProperty = class(TDateProperty)
|
||||||
|
public
|
||||||
|
procedure Edit; override;
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvTimeExProperty = class(TTimeProperty)
|
||||||
|
public
|
||||||
|
procedure Edit; override;
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvShortCutProperty = class(TIntegerProperty)
|
||||||
|
public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
procedure GetValues(Proc: TGetStrProc); override;
|
||||||
|
function GetValue: string; override;
|
||||||
|
procedure SetValue(const Value: string); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvDefaultImageIndexProperty = class(TIntegerProperty, ICustomPropertyDrawing, ICustomPropertyListDrawing)
|
||||||
|
protected
|
||||||
|
function ImageList: TCustomImageList; virtual;
|
||||||
|
public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
procedure GetValues(Proc: TGetStrProc); override;
|
||||||
|
function GetValue: string; override;
|
||||||
|
procedure SetValue(const Value: string); override;
|
||||||
|
procedure ListMeasureWidth(const Value: string;
|
||||||
|
ACanvas: TCanvas; var AWidth: Integer); virtual;
|
||||||
|
procedure ListMeasureHeight(const Value: string;
|
||||||
|
ACanvas: TCanvas; var AHeight: Integer); virtual;
|
||||||
|
procedure ListDrawValue(const Value: string;
|
||||||
|
ACanvas: TCanvas; const ARect: TRect; ASelected: Boolean); virtual;
|
||||||
|
procedure PropDrawName(ACanvas: TCanvas; const ARect: TRect;
|
||||||
|
ASelected: Boolean);
|
||||||
|
procedure PropDrawValue(ACanvas: TCanvas; const ARect: TRect;
|
||||||
|
ASelected: Boolean);
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvNosortEnumProperty = class(TEnumProperty)
|
||||||
|
public
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvIntegerProperty = class(TIntegerProperty)
|
||||||
|
public
|
||||||
|
function GetValue: string; override;
|
||||||
|
procedure SetValue(const Value: string); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvFloatProperty = class(TFloatProperty)
|
||||||
|
public
|
||||||
|
function GetValue: string; override;
|
||||||
|
procedure SetValue(const Value: string); override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvImageListEditor = class(TComponentEditor)
|
||||||
|
private
|
||||||
|
procedure SaveAsBitmap(ImageList: TImageList);
|
||||||
|
public
|
||||||
|
procedure ExecuteVerb(Index: Integer); override;
|
||||||
|
function GetVerb(Index: Integer): string; override;
|
||||||
|
function GetVerbCount: Integer; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvWeekDayProperty = class(TEnumProperty)
|
||||||
|
function GetAttributes: TPropertyAttributes; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvComponentFormProperty = class(TComponentProperty)
|
||||||
|
public
|
||||||
|
procedure GetValues(Proc: TGetStrProc); override;
|
||||||
|
procedure SetValue(const Value: string); override;
|
||||||
|
end;
|
||||||
|
********************************)
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
TypInfo,
|
||||||
|
JvDsgnConsts, JvTypes;
|
||||||
|
(*
|
||||||
|
Math, FileCtrl, //Consts,
|
||||||
|
Registry,
|
||||||
|
Dlgs, JvDateTimeForm,
|
||||||
|
JvTypes, JvStringsForm, JvDsgnConsts, JvConsts;
|
||||||
|
*)
|
||||||
|
|
||||||
|
function ValueName(E: Extended): string;
|
||||||
|
begin
|
||||||
|
if E = High(Integer) then
|
||||||
|
Result := RsMaxInt
|
||||||
|
else
|
||||||
|
if E = Low(Integer) then
|
||||||
|
Result := RsMinInt
|
||||||
|
else
|
||||||
|
if E = High(Longint) then
|
||||||
|
Result := RsMaxLong
|
||||||
|
else
|
||||||
|
if E = Low(Longint) then
|
||||||
|
Result := RsMinLong
|
||||||
|
else
|
||||||
|
if E = High(Shortint) then
|
||||||
|
Result := RsMaxShort
|
||||||
|
else
|
||||||
|
if E = Low(Shortint) then
|
||||||
|
Result :=RsMinShort
|
||||||
|
else
|
||||||
|
if E = High(Word) then
|
||||||
|
Result := RsMaxWord
|
||||||
|
else
|
||||||
|
Result := '';
|
||||||
|
end;
|
||||||
|
|
||||||
|
function StrToValue(const S: string): Longint;
|
||||||
|
begin
|
||||||
|
if CompareText(S, RsMaxLong) = 0 then
|
||||||
|
Result := High(Longint)
|
||||||
|
else
|
||||||
|
if CompareText(S, RsMinLong) = 0 then
|
||||||
|
Result := Low(Longint)
|
||||||
|
else
|
||||||
|
if CompareText(S, RsMaxInt) = 0 then
|
||||||
|
Result := High(Integer)
|
||||||
|
else
|
||||||
|
if CompareText(S, RsMinInt) = 0 then
|
||||||
|
Result := Low(Integer)
|
||||||
|
else
|
||||||
|
if CompareText(S, RsMaxShort) = 0 then
|
||||||
|
Result := High(Shortint)
|
||||||
|
else
|
||||||
|
if CompareText(S, RsMinShort) = 0 then
|
||||||
|
Result := Low(Shortint)
|
||||||
|
else
|
||||||
|
if CompareText(S, RsMaxWord) = 0 then
|
||||||
|
Result := High(Word)
|
||||||
|
else
|
||||||
|
Result := 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvPersistentPropertyEditor } ================================================
|
||||||
|
|
||||||
|
function TJvPersistentPropertyEditor.GetInstance: TPersistent;
|
||||||
|
var
|
||||||
|
LInstance: TPersistent;
|
||||||
|
LPersistentPropertyName: string;
|
||||||
|
begin
|
||||||
|
if not Assigned(FInstance) then
|
||||||
|
begin
|
||||||
|
LInstance := GetComponent(0);
|
||||||
|
LPersistentPropertyName := GetName;
|
||||||
|
if IsPublishedProp(LInstance, LPersistentPropertyName) then
|
||||||
|
begin
|
||||||
|
FInstance := TPersistent(GetObjectProp(LInstance, LPersistentPropertyName));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result := FInstance;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//Set property name in property editor procedure "Initialize" dynamically,
|
||||||
|
//Do't set property name in property constructor Create,that will raise a
|
||||||
|
//SDuplicateName error if
|
||||||
|
//you have more then one TJvPersistent property in a component.
|
||||||
|
//Like this 'A component named xx already exists'
|
||||||
|
procedure TJvPersistentPropertyEditor.Initialize;
|
||||||
|
var
|
||||||
|
LInstance: TPersistent;
|
||||||
|
LPersistentPropertyName: string;
|
||||||
|
begin
|
||||||
|
inherited Initialize;
|
||||||
|
LInstance := Instance;
|
||||||
|
LPersistentPropertyName := GetName;
|
||||||
|
if LInstance is TComponent then
|
||||||
|
begin
|
||||||
|
if (TComponent(LInstance).Name = '') and
|
||||||
|
(TComponent(LInstance).Name <> LPersistentPropertyName) then
|
||||||
|
begin
|
||||||
|
TComponent(LInstance).Name := LPersistentPropertyName;
|
||||||
|
end;
|
||||||
|
end else
|
||||||
|
if LInstance is TJvPersistent then
|
||||||
|
begin
|
||||||
|
if (TJvPersistent(LInstance).Name = '') and
|
||||||
|
(TJvPersistent(LInstance).Name <> LPersistentPropertyName) then
|
||||||
|
begin
|
||||||
|
TJvPersistent(LInstance).Name := LPersistentPropertyName;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvPersistentPropertyEditor.GetValue:string;
|
||||||
|
begin
|
||||||
|
FmtStr(Result, '(%s)', [GetPropType^.Name]);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
(************************** NOT CONVERTED **************************************
|
||||||
|
|
||||||
|
//=== { TJvFilenameProperty } ================================================
|
||||||
|
|
||||||
|
procedure TJvFilenameProperty.Edit;
|
||||||
|
begin
|
||||||
|
with TOpenDialog.Create(nil) do
|
||||||
|
try
|
||||||
|
FileName := GetStrValue;
|
||||||
|
Filter := GetFilter;
|
||||||
|
Options := GetOptions;
|
||||||
|
OnShow := OnDialogShow;
|
||||||
|
if Execute then
|
||||||
|
SetStrValue(FileName);
|
||||||
|
finally
|
||||||
|
Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvFilenameProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := [paDialog, paRevertable];
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvFilenameProperty.GetFilter: string;
|
||||||
|
begin
|
||||||
|
Result := RsAllFilesFilter;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvFilenameProperty.GetOptions: TOpenOptions;
|
||||||
|
begin
|
||||||
|
Result := [ofHideReadOnly, ofEnableSizing];
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvFilenameProperty.GetValue: string;
|
||||||
|
begin
|
||||||
|
Result := inherited GetValue;
|
||||||
|
if Result = '' then
|
||||||
|
Result := RsFileName;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvDirectoryProperty } ===============================================
|
||||||
|
|
||||||
|
procedure TJvDirectoryProperty.Edit;
|
||||||
|
var
|
||||||
|
AName: string;
|
||||||
|
FolderName: THintString; // (ahuser) TCaption is "type Xxxstring", THintString is "Xxxstring"
|
||||||
|
C: TPersistent;
|
||||||
|
begin
|
||||||
|
C := GetComponent(0);
|
||||||
|
if C is TComponent then
|
||||||
|
AName := TComponent(C).Name
|
||||||
|
else
|
||||||
|
if C is TCollectionItem then
|
||||||
|
AName := TCollectionItem(C).GetNamePath
|
||||||
|
else
|
||||||
|
AName := C.ClassName;
|
||||||
|
if SelectDirectory(AName + '.' + GetName, '', FolderName) then
|
||||||
|
SetValue(FolderName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvDirectoryProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := [paDialog, paRevertable];
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvDirectoryProperty.GetValue: string;
|
||||||
|
begin
|
||||||
|
Result := inherited GetValue;
|
||||||
|
if Result = '' then
|
||||||
|
Result := RsDirectory;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvHintProperty } ====================================================
|
||||||
|
|
||||||
|
function TJvHintProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := {inherited GetAttributes +} [paDialog];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvHintProperty.Edit;
|
||||||
|
var
|
||||||
|
Temp: string;
|
||||||
|
Comp: TPersistent;
|
||||||
|
begin
|
||||||
|
with TJvStrEditDlg.Create(Application) do
|
||||||
|
try
|
||||||
|
Comp := GetComponent(0);
|
||||||
|
if Comp is TComponent then
|
||||||
|
Caption := TComponent(Comp).Name + '.' + GetName
|
||||||
|
else
|
||||||
|
Caption := GetName;
|
||||||
|
Temp := GetStrValue;
|
||||||
|
Memo.Lines.Text := Temp;
|
||||||
|
UpdateStatus(nil);
|
||||||
|
if ShowModal = mrOk then
|
||||||
|
begin
|
||||||
|
Temp := Memo.Text;
|
||||||
|
while (Length(Temp) > 0) and (Temp[Length(Temp)] < ' ') do
|
||||||
|
System.Delete(Temp, Length(Temp), 1);
|
||||||
|
SetStrValue(Temp);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvStringsProperty } =================================================
|
||||||
|
|
||||||
|
procedure TJvStringsProperty.Edit;
|
||||||
|
var
|
||||||
|
Temp: string;
|
||||||
|
Comp: TPersistent;
|
||||||
|
begin
|
||||||
|
with TJvStrEditDlg.Create(Application) do
|
||||||
|
try
|
||||||
|
Comp := GetComponent(0);
|
||||||
|
if Comp is TComponent then
|
||||||
|
Caption := TComponent(Comp).Name + '.' + GetName
|
||||||
|
else
|
||||||
|
Caption := GetName;
|
||||||
|
Temp := GetStrValue;
|
||||||
|
Memo.Lines.Text := Temp;
|
||||||
|
UpdateStatus(nil);
|
||||||
|
if ShowModal = mrOk then
|
||||||
|
begin
|
||||||
|
Temp := Memo.Text;
|
||||||
|
while (Length(Temp) > 0) and (Temp[Length(Temp)] < ' ') do
|
||||||
|
System.Delete(Temp, Length(Temp), 1);
|
||||||
|
SetStrValue(Temp);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvStringsProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := [paDialog, paRevertable];
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvBasePropertyEditor } ==============================================
|
||||||
|
|
||||||
|
procedure TJvBasePropertyEditor.EditProperty(const Prop: IProperty; var Continue: Boolean);
|
||||||
|
var
|
||||||
|
PropName: string;
|
||||||
|
begin
|
||||||
|
PropName := Prop.GetName;
|
||||||
|
if SameText(PropName, GetEditPropertyName) then
|
||||||
|
begin
|
||||||
|
Prop.Edit;
|
||||||
|
Continue := False;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvBasePropertyEditor.ExecuteVerb(Index: Integer);
|
||||||
|
begin
|
||||||
|
if Index = 0 then
|
||||||
|
Edit
|
||||||
|
else
|
||||||
|
inherited ExecuteVerb(Index);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvBasePropertyEditor.GetVerb(Index: Integer): string;
|
||||||
|
begin
|
||||||
|
if Index = 0 then
|
||||||
|
Result := Format(RsFmtEditEllipsis, [GetEditPropertyName])
|
||||||
|
else
|
||||||
|
Result := '';
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvBasePropertyEditor.GetVerbCount: Integer;
|
||||||
|
begin
|
||||||
|
Result := 1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvDateTimeExProperty } ==============================================
|
||||||
|
|
||||||
|
procedure TJvDateTimeExProperty.Edit;
|
||||||
|
var
|
||||||
|
D: TDateTime;
|
||||||
|
begin
|
||||||
|
D := GetFloatValue;
|
||||||
|
if D = 0.0 then
|
||||||
|
D := Now;
|
||||||
|
if TFrmSelectDateTimeDlg.SelectDateTime(D, dstDateTime) then
|
||||||
|
begin
|
||||||
|
SetFloatValue(D);
|
||||||
|
Designer.Modified;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvDateTimeExProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := inherited GetAttributes + [paDialog];
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvDateExProperty } ==================================================
|
||||||
|
|
||||||
|
procedure TJvDateExProperty.Edit;
|
||||||
|
var
|
||||||
|
D: TDateTime;
|
||||||
|
begin
|
||||||
|
D := GetFloatValue;
|
||||||
|
if D = 0.0 then
|
||||||
|
D := Now;
|
||||||
|
if TFrmSelectDateTimeDlg.SelectDateTime(D, dstDate) then
|
||||||
|
begin
|
||||||
|
SetFloatValue(D);
|
||||||
|
Designer.Modified;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvDateExProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := inherited GetAttributes + [paDialog];
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvTimeExProperty } ==================================================
|
||||||
|
|
||||||
|
procedure TJvTimeExProperty.Edit;
|
||||||
|
var
|
||||||
|
D: TDateTime;
|
||||||
|
begin
|
||||||
|
D := GetFloatValue;
|
||||||
|
if D = 0.0 then
|
||||||
|
D := Now
|
||||||
|
else // (p3) we need the date part or we might get a "Must be in ShowCheckBox mode" error
|
||||||
|
D := SysUtils.Date + Frac(D);
|
||||||
|
if TFrmSelectDateTimeDlg.SelectDateTime(D, dstTime) then
|
||||||
|
begin
|
||||||
|
SetFloatValue(Frac(D)); // (p3) only return the time portion
|
||||||
|
Designer.Modified;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvTimeExProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := inherited GetAttributes + [paDialog];
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvDefaultImageIndexProperty } =======================================
|
||||||
|
|
||||||
|
function TJvDefaultImageIndexProperty.ImageList: TCustomImageList;
|
||||||
|
const
|
||||||
|
cImageList = 'ImageList';
|
||||||
|
cImages = 'Images';
|
||||||
|
begin
|
||||||
|
if TypInfo.GetPropInfo(GetComponent(0), cImageList) <> nil then
|
||||||
|
Result := TCustomImageList(TypInfo.GetObjectProp(GetComponent(0), cImageList))
|
||||||
|
else
|
||||||
|
if TypInfo.GetPropInfo(GetComponent(0), cImages) <> nil then
|
||||||
|
Result := TCustomImageList(TypInfo.GetObjectProp(GetComponent(0), cImages))
|
||||||
|
else
|
||||||
|
Result := nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvDefaultImageIndexProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := [paValueList, paMultiSelect, paRevertable];
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvDefaultImageIndexProperty.GetValue: string;
|
||||||
|
begin
|
||||||
|
Result := IntToStr(GetOrdValue);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvDefaultImageIndexProperty.SetValue(const Value: string);
|
||||||
|
var
|
||||||
|
XValue: Integer;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
XValue := StrToInt(Value);
|
||||||
|
SetOrdValue(XValue);
|
||||||
|
except
|
||||||
|
inherited SetValue(Value);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvDefaultImageIndexProperty.GetValues(Proc: TGetStrProc);
|
||||||
|
var
|
||||||
|
Tmp: TCustomImageList;
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
Tmp := ImageList;
|
||||||
|
if Assigned(Tmp) then
|
||||||
|
for I := 0 to Tmp.Count - 1 do
|
||||||
|
Proc(IntToStr(I));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvDefaultImageIndexProperty.ListMeasureWidth(const Value: string; ACanvas: TCanvas; var AWidth: Integer);
|
||||||
|
var
|
||||||
|
Tmp: TCustomImageList;
|
||||||
|
begin
|
||||||
|
Tmp := ImageList;
|
||||||
|
if Assigned(Tmp) then
|
||||||
|
AWidth := Tmp.Width + ACanvas.TextHeight(Value) + 4;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvDefaultImageIndexProperty.ListMeasureHeight(const Value: string; ACanvas: TCanvas; var AHeight: Integer);
|
||||||
|
var
|
||||||
|
Tmp: TCustomImageList;
|
||||||
|
begin
|
||||||
|
Tmp := ImageList;
|
||||||
|
if Assigned(Tmp) then
|
||||||
|
AHeight := Max(Tmp.Height + 2, ACanvas.TextHeight(Value) + 2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvDefaultImageIndexProperty.ListDrawValue(const Value: string; ACanvas:
|
||||||
|
TCanvas; const ARect: TRect; ASelected: Boolean);
|
||||||
|
var
|
||||||
|
Tmp: TCustomImageList;
|
||||||
|
R: TRect;
|
||||||
|
begin
|
||||||
|
DefaultPropertyListDrawValue(Value, ACanvas, ARect, ASelected);
|
||||||
|
Tmp := ImageList;
|
||||||
|
if Tmp <> nil then
|
||||||
|
begin
|
||||||
|
R := ARect;
|
||||||
|
ACanvas.FillRect(ARect);
|
||||||
|
Tmp.Draw(ACanvas, ARect.Left, ARect.Top, StrToInt(Value));
|
||||||
|
OffsetRect(R, Tmp.Width + 2, 0);
|
||||||
|
DrawText(ACanvas.Handle, PChar(Value), -1, R, 0);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvDefaultImageIndexProperty.PropDrawName(ACanvas: TCanvas;
|
||||||
|
const ARect: TRect; ASelected: Boolean);
|
||||||
|
begin
|
||||||
|
DefaultPropertyDrawName(Self, ACanvas, ARect);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvDefaultImageIndexProperty.PropDrawValue(ACanvas: TCanvas;
|
||||||
|
const ARect: TRect; ASelected: Boolean);
|
||||||
|
var
|
||||||
|
Tmp: TCustomImageList;
|
||||||
|
begin
|
||||||
|
Tmp := ImageList;
|
||||||
|
if (GetVisualValue <> '') and Assigned(Tmp) then
|
||||||
|
ListDrawValue(GetVisualValue, ACanvas, ARect, ASelected)
|
||||||
|
else
|
||||||
|
DefaultPropertyDrawValue(Self, ACanvas, ARect);
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvShortCutProperty } ================================================
|
||||||
|
|
||||||
|
function TJvShortCutProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := [paValueList, paMultiSelect, paRevertable];
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvShortCutProperty.GetValue: string;
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
Result := ShortCutToText(GetOrdValue);
|
||||||
|
if Result = '' then
|
||||||
|
Result := RsNone;
|
||||||
|
except
|
||||||
|
Result := inherited GetValue;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvShortCutProperty.GetValues(Proc: TGetStrProc);
|
||||||
|
var
|
||||||
|
Key: Word;
|
||||||
|
Shift: TShiftState;
|
||||||
|
begin
|
||||||
|
Proc(RsNone);
|
||||||
|
|
||||||
|
Shift := [ssCtrl];
|
||||||
|
for Key := Ord('A') to Ord('Z') do
|
||||||
|
Proc(ShortCutToText(ShortCut(Key, Shift)));
|
||||||
|
|
||||||
|
Shift := [ssAlt, ssCtrl];
|
||||||
|
for Key := Ord('A') to Ord('Z') do
|
||||||
|
Proc(ShortCutToText(ShortCut(Key, Shift)));
|
||||||
|
|
||||||
|
Shift := [];
|
||||||
|
for Key := VK_F1 to VK_F10 do
|
||||||
|
Proc(ShortCutToText(ShortCut(Key, Shift)));
|
||||||
|
|
||||||
|
Shift := [ssCtrl];
|
||||||
|
for Key := VK_F1 to VK_F10 do
|
||||||
|
Proc(ShortCutToText(ShortCut(Key, Shift)));
|
||||||
|
|
||||||
|
Shift := [ssShift];
|
||||||
|
for Key := VK_F1 to VK_F10 do
|
||||||
|
Proc(ShortCutToText(ShortCut(Key, Shift)));
|
||||||
|
|
||||||
|
Shift := [ssShift, ssCtrl];
|
||||||
|
for Key := VK_F1 to VK_F10 do
|
||||||
|
Proc(ShortCutToText(ShortCut(Key, Shift)));
|
||||||
|
|
||||||
|
Shift := [ssShift, ssAlt, ssCtrl];
|
||||||
|
for Key := VK_F1 to VK_F10 do
|
||||||
|
Proc(ShortCutToText(ShortCut(Key, Shift)));
|
||||||
|
|
||||||
|
Proc(ShortCutToText(ShortCut(VK_INSERT, [])));
|
||||||
|
Proc(ShortCutToText(ShortCut(VK_INSERT, [ssShift])));
|
||||||
|
Proc(ShortCutToText(ShortCut(VK_INSERT, [ssCtrl])));
|
||||||
|
|
||||||
|
Proc(ShortCutToText(ShortCut(VK_DELETE, [])));
|
||||||
|
Proc(ShortCutToText(ShortCut(VK_DELETE, [ssShift])));
|
||||||
|
Proc(ShortCutToText(ShortCut(VK_DELETE, [ssCtrl])));
|
||||||
|
|
||||||
|
Proc(ShortCutToText(ShortCut(VK_BACK, [ssAlt])));
|
||||||
|
Proc(ShortCutToText(ShortCut(VK_BACK, [ssAlt, ssShift])));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvShortCutProperty.SetValue(const Value: string);
|
||||||
|
begin
|
||||||
|
try
|
||||||
|
SetOrdValue(TextToShortCut(Value));
|
||||||
|
except
|
||||||
|
inherited SetValue(Value);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvNosortEnumProperty } ==============================================
|
||||||
|
|
||||||
|
function TJvNosortEnumProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := inherited GetAttributes - [paSortList];
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvFilenameProperty.OnDialogShow(Sender: TObject);
|
||||||
|
begin
|
||||||
|
SetDlgItemText(GetParent(TOpenDialog(Sender).Handle), chx1, PChar(RsStripFilePath));
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvExeNameProperty } =================================================
|
||||||
|
|
||||||
|
function TJvExeNameProperty.GetFilter: string;
|
||||||
|
begin
|
||||||
|
Result := RsExecutableFilesExeExeAllFiles;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvIntegerProperty } =================================================
|
||||||
|
|
||||||
|
function TJvIntegerProperty.GetValue: string;
|
||||||
|
begin
|
||||||
|
Result := ValueName(GetOrdValue);
|
||||||
|
if Result = '' then
|
||||||
|
Result := IntToStr(GetOrdValue);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvIntegerProperty.SetValue(const Value: string);
|
||||||
|
var
|
||||||
|
L: Longint;
|
||||||
|
begin
|
||||||
|
L := StrToValue(Value);
|
||||||
|
if L = 0 then
|
||||||
|
L := StrToInt(Value);
|
||||||
|
inherited SetValue(IntToStr(L));
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvFloatProperty } ===================================================
|
||||||
|
|
||||||
|
function TJvFloatProperty.GetValue: string;
|
||||||
|
const
|
||||||
|
Precisions: array [TFloatType] of Integer = (7, 15, 18, 18, 18);
|
||||||
|
begin
|
||||||
|
Result := ValueName(GetFloatValue);
|
||||||
|
if Result = '' then
|
||||||
|
Result := FloatToStrF(GetFloatValue, ffGeneral,
|
||||||
|
Precisions[GetTypeData(GetPropType)^.FloatType], 0);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvFloatProperty.SetValue(const Value: string);
|
||||||
|
var
|
||||||
|
L: Longint;
|
||||||
|
begin
|
||||||
|
L := StrToValue(Value);
|
||||||
|
if L <> 0 then
|
||||||
|
SetFloatValue(L)
|
||||||
|
else
|
||||||
|
SetFloatValue(StrToFloat(Value));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvImageListEditor.SaveAsBitmap(ImageList: TImageList);
|
||||||
|
var
|
||||||
|
Bitmap: TBitmap;
|
||||||
|
SaveDlg: TOpenDialog;
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
if ImageList.Count > 0 then
|
||||||
|
begin
|
||||||
|
SaveDlg := TSavePictureDialog.Create(Application);
|
||||||
|
with SaveDlg do
|
||||||
|
try
|
||||||
|
Options := [ofHideReadOnly, ofOverwritePrompt];
|
||||||
|
DefaultExt := GraphicExtension(TBitmap);
|
||||||
|
Filter := GraphicFilter(TBitmap);
|
||||||
|
if Execute then
|
||||||
|
begin
|
||||||
|
Bitmap := TBitmap.Create;
|
||||||
|
try
|
||||||
|
with Bitmap do
|
||||||
|
begin
|
||||||
|
Width := ImageList.Width * ImageList.Count;
|
||||||
|
Height := ImageList.Height;
|
||||||
|
if ImageList.BkColor <> clNone then
|
||||||
|
Canvas.Brush.Color := ImageList.BkColor
|
||||||
|
else
|
||||||
|
Canvas.Brush.Color := clWindow;
|
||||||
|
Canvas.FillRect(Bounds(0, 0, Width, Height));
|
||||||
|
for I := 0 to ImageList.Count - 1 do
|
||||||
|
ImageList.Draw(Canvas, ImageList.Width * I, 0, I);
|
||||||
|
HandleType := bmDIB;
|
||||||
|
if PixelFormat in [pf15bit, pf16bit] then
|
||||||
|
try
|
||||||
|
PixelFormat := pf24bit;
|
||||||
|
except
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Bitmap.SaveToFile(FileName);
|
||||||
|
finally
|
||||||
|
Bitmap.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
Free;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Beep;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvImageListEditor.ExecuteVerb(Index: Integer);
|
||||||
|
begin
|
||||||
|
{ The hard typecast to TImageList is necessary because EditImageList does
|
||||||
|
not want a TCustomImageList but the component could be one. This seems to
|
||||||
|
be ok because TListView.SmallImages is also a TCustomImageList and not a
|
||||||
|
TImageList. So the Component Editor for TCustomImageList must also use a
|
||||||
|
hard typecast. }
|
||||||
|
if Designer <> nil then
|
||||||
|
case Index of
|
||||||
|
0:
|
||||||
|
if EditImageList(TImageList(Component)) then
|
||||||
|
Designer.Modified;
|
||||||
|
1:
|
||||||
|
SaveAsBitmap(TImageList(Component));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvImageListEditor.GetVerb(Index: Integer): string;
|
||||||
|
begin
|
||||||
|
case Index of
|
||||||
|
0:
|
||||||
|
Result := SImageListEditor;
|
||||||
|
1:
|
||||||
|
Result := RsSaveImageList;
|
||||||
|
else
|
||||||
|
Result := '';
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvImageListEditor.GetVerbCount: Integer;
|
||||||
|
begin
|
||||||
|
Result := 2;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvWeekDayProperty } =================================================
|
||||||
|
|
||||||
|
function TJvWeekDayProperty.GetAttributes: TPropertyAttributes;
|
||||||
|
begin
|
||||||
|
Result := [paMultiSelect, paValueList];
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvComponentFormProperty } ===========================================
|
||||||
|
|
||||||
|
procedure TJvComponentFormProperty.GetValues(Proc: TGetStrProc);
|
||||||
|
var
|
||||||
|
Form: TComponent;
|
||||||
|
begin
|
||||||
|
inherited GetValues(Proc);
|
||||||
|
Form := Designer.Root;
|
||||||
|
if (Form is GetTypeData(GetPropType)^.ClassType) and (Form.Name <> '') then
|
||||||
|
Proc(Form.Name);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvComponentFormProperty.SetValue(const Value: string);
|
||||||
|
var
|
||||||
|
Component: TComponent;
|
||||||
|
Form: TComponent;
|
||||||
|
begin
|
||||||
|
Component := Designer.GetComponent(Value);
|
||||||
|
Form := Designer.Root;
|
||||||
|
if ((Component = nil) or not (Component is GetTypeData(GetPropType)^.ClassType)) and
|
||||||
|
(CompareText(Form.Name, Value) = 0) then
|
||||||
|
begin
|
||||||
|
if not (Form is GetTypeData(GetPropType)^.ClassType) then
|
||||||
|
raise EPropertyError.CreateRes(@SInvalidPropertyValue);
|
||||||
|
SetOrdValue(NativeInt(Form));
|
||||||
|
end
|
||||||
|
else
|
||||||
|
inherited SetValue(Value);
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvStringsEditor } ===================================================
|
||||||
|
|
||||||
|
function TJvStringsEditor.GetEditPropertyName: string;
|
||||||
|
begin
|
||||||
|
Result := 'Strings';
|
||||||
|
end;
|
||||||
|
|
||||||
|
//=== { TJvItemsEditor } =====================================================
|
||||||
|
|
||||||
|
function TJvItemsEditor.GetEditPropertyName: string;
|
||||||
|
begin
|
||||||
|
Result := 'Items';
|
||||||
|
end;
|
||||||
|
*******************************************************************************)
|
||||||
|
end.
|
||||||
|
|
@ -1,2 +1,3 @@
|
|||||||
tjvcheckbox.bmp
|
tjvcheckbox.bmp
|
||||||
|
tjvpanel.bmp
|
||||||
tjvcalcedit.bmp
|
tjvcalcedit.bmp
|
||||||
|
BIN
components/jvcllaz/design/JvStdCtrls/images/tjvpanel.bmp
Normal file
BIN
components/jvcllaz/design/JvStdCtrls/images/tjvpanel.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
@ -14,12 +14,14 @@ implementation
|
|||||||
{$R ../../resource/jvstdctrlsreg.res}
|
{$R ../../resource/jvstdctrlsreg.res}
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, Controls, JvDsgnConsts, JvButton, JvCheckbox, JvBaseEdits;
|
Classes, Controls, PropEdits,
|
||||||
|
JvDsgnConsts, //JvDsgnEditors,
|
||||||
|
JvButton, JvCheckbox, JvBaseEdits, JVPanel;
|
||||||
|
|
||||||
procedure Register;
|
procedure Register;
|
||||||
begin
|
begin
|
||||||
//RegisterComponents(RsPaletteButton, [TJvButton]);
|
RegisterComponents(RsPaletteJvcl, [TJvCheckbox, TJvPanel, TJvCalcEdit]);
|
||||||
RegisterComponents(RsPaletteJvcl, [TJvCheckbox, TJvCalcEdit]);
|
// RegisterPropertyEditor(TypeInfo(TJvArrangeSettings), nil, '', TJvPersistentPropertyEditor);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -17,9 +17,10 @@
|
|||||||
<Description Value="JVCL Core Components (Designtime). Must be compiled before any of the other JvXXX packages can be installed."/>
|
<Description Value="JVCL Core Components (Designtime). Must be compiled before any of the other JvXXX packages can be installed."/>
|
||||||
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
|
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
|
||||||
<Version Major="1" Release="6"/>
|
<Version Major="1" Release="6"/>
|
||||||
<Files Count="3">
|
<Files Count="4">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="..\design\JvCore\jvcorereg.pas"/>
|
<Filename Value="..\design\JvCore\jvcorereg.pas"/>
|
||||||
|
<HasRegisterProc Value="True"/>
|
||||||
<UnitName Value="JvCoreReg"/>
|
<UnitName Value="JvCoreReg"/>
|
||||||
</Item1>
|
</Item1>
|
||||||
<Item2>
|
<Item2>
|
||||||
@ -30,6 +31,10 @@
|
|||||||
<Filename Value="..\design\JvCore\jvstringsform.pas"/>
|
<Filename Value="..\design\JvCore\jvstringsform.pas"/>
|
||||||
<UnitName Value="JvStringsForm"/>
|
<UnitName Value="JvStringsForm"/>
|
||||||
</Item3>
|
</Item3>
|
||||||
|
<Item4>
|
||||||
|
<Filename Value="..\design\JvCore\jvdsgneditors.pas"/>
|
||||||
|
<UnitName Value="JvDsgnEditors"/>
|
||||||
|
</Item4>
|
||||||
</Files>
|
</Files>
|
||||||
<RequiredPkgs Count="2">
|
<RequiredPkgs Count="2">
|
||||||
<Item1>
|
<Item1>
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
"/>
|
"/>
|
||||||
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
|
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
|
||||||
<Version Major="1" Release="6"/>
|
<Version Major="1" Release="6"/>
|
||||||
<Files Count="9">
|
<Files Count="10">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="..\run\JvCore\jvtypes.pas"/>
|
<Filename Value="..\run\JvCore\jvtypes.pas"/>
|
||||||
<UnitName Value="JvTypes"/>
|
<UnitName Value="JvTypes"/>
|
||||||
@ -60,6 +60,10 @@
|
|||||||
<Filename Value="..\run\JvCore\jvthemes.pas"/>
|
<Filename Value="..\run\JvCore\jvthemes.pas"/>
|
||||||
<UnitName Value="JvThemes"/>
|
<UnitName Value="JvThemes"/>
|
||||||
</Item9>
|
</Item9>
|
||||||
|
<Item10>
|
||||||
|
<Filename Value="..\run\JvCore\jvextcomponent.pas"/>
|
||||||
|
<UnitName Value="JvExtComponent"/>
|
||||||
|
</Item10>
|
||||||
</Files>
|
</Files>
|
||||||
<RequiredPkgs Count="2">
|
<RequiredPkgs Count="2">
|
||||||
<Item1>
|
<Item1>
|
||||||
|
@ -17,7 +17,7 @@ CalcEdit, button, checkbox, linked controls
|
|||||||
"/>
|
"/>
|
||||||
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
|
<License Value="The JVCL is released in accordance with the MPL 1.1 license. To get your own copy or read it, go to http://www.mozilla.org/MPL/MPL-1.1.html. "/>
|
||||||
<Version Major="1" Release="6"/>
|
<Version Major="1" Release="6"/>
|
||||||
<Files Count="4">
|
<Files Count="6">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="..\run\JvStdCtrls\jvbutton.pas"/>
|
<Filename Value="..\run\JvStdCtrls\jvbutton.pas"/>
|
||||||
<UnitName Value="JvButton"/>
|
<UnitName Value="JvButton"/>
|
||||||
@ -34,6 +34,14 @@ CalcEdit, button, checkbox, linked controls
|
|||||||
<Filename Value="..\run\JvStdCtrls\jvcheckbox.pas"/>
|
<Filename Value="..\run\JvStdCtrls\jvcheckbox.pas"/>
|
||||||
<UnitName Value="JvCheckBox"/>
|
<UnitName Value="JvCheckBox"/>
|
||||||
</Item4>
|
</Item4>
|
||||||
|
<Item5>
|
||||||
|
<Filename Value="..\run\JvStdCtrls\jvpanel.pas"/>
|
||||||
|
<UnitName Value="JvPanel"/>
|
||||||
|
</Item5>
|
||||||
|
<Item6>
|
||||||
|
<Filename Value="..\run\JvStdCtrls\jvhottrackpersistent.pas"/>
|
||||||
|
<UnitName Value="JvHotTrackPersistent"/>
|
||||||
|
</Item6>
|
||||||
</Files>
|
</Files>
|
||||||
<RequiredPkgs Count="2">
|
<RequiredPkgs Count="2">
|
||||||
<Item1>
|
<Item1>
|
||||||
|
Binary file not shown.
131
components/jvcllaz/run/JvCore/JvExtComponent.pas
Normal file
131
components/jvcllaz/run/JvCore/JvExtComponent.pas
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
{-----------------------------------------------------------------------------
|
||||||
|
The contents of this file are subject to the Mozilla Public License
|
||||||
|
Version 1.1 (the "License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
|
||||||
|
Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
|
||||||
|
the specific language governing rights and limitations under the License.
|
||||||
|
|
||||||
|
The Original Code is: JvExtComponent.pas, released on 2006-03-11.
|
||||||
|
|
||||||
|
The Initial Developer of the Original Code is Joe Doe .
|
||||||
|
Portions created by Joe Doe are Copyright (C) 1999 Joe Doe.
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Contributor(s): -
|
||||||
|
|
||||||
|
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
|
||||||
|
located at http://jvcl.delphi-jedi.org
|
||||||
|
|
||||||
|
Known Issues:
|
||||||
|
-----------------------------------------------------------------------------}
|
||||||
|
// $Id$
|
||||||
|
|
||||||
|
unit JvExtComponent;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Types,
|
||||||
|
Classes, Graphics, ExtCtrls,
|
||||||
|
JvExExtCtrls;
|
||||||
|
// JvExComCtrls;
|
||||||
|
|
||||||
|
type
|
||||||
|
TJvPaintPanelContentEvent = procedure(Sender: TObject; Canvas: TCanvas; R: TRect) of object;
|
||||||
|
|
||||||
|
TJvCustomPanel = class(TJvExCustomPanel)
|
||||||
|
private
|
||||||
|
FOnPaintContent: TJvPaintPanelContentEvent;
|
||||||
|
protected
|
||||||
|
(******************** NOT CONVERTED ***
|
||||||
|
function GetFlat: Boolean;
|
||||||
|
procedure ReadCtl3D(Reader: TReader);
|
||||||
|
procedure ReadParentCtl3D(Reader: TReader);
|
||||||
|
procedure SetFlat(const Value: Boolean);
|
||||||
|
function GetParentFlat: Boolean;
|
||||||
|
procedure SetParentFlat(const Value: Boolean);
|
||||||
|
**************************************)
|
||||||
|
|
||||||
|
procedure Paint; override;
|
||||||
|
procedure PaintContent(const R: TRect); virtual;
|
||||||
|
|
||||||
|
procedure DefineProperties(Filer: TFiler); override;
|
||||||
|
|
||||||
|
(******************* NOT CONVERTED ****
|
||||||
|
property Flat: Boolean read GetFlat write SetFlat default False;
|
||||||
|
property ParentFlat: Boolean read GetParentFlat write SetParentFlat default True;
|
||||||
|
**************************************)
|
||||||
|
|
||||||
|
property OnPaintContent: TJvPaintPanelContentEvent read FOnPaintContent write FOnPaintContent;
|
||||||
|
end;
|
||||||
|
|
||||||
|
(*************** NOT CONVERTED *********
|
||||||
|
TJvPubCustomPanel = TJvExPubCustomPanel;
|
||||||
|
TJvCustomTreeView = TJvExCustomTreeView;
|
||||||
|
***************************************)
|
||||||
|
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
{ TJvCustomPanel }
|
||||||
|
|
||||||
|
|
||||||
|
(***************** NOT CONVERTED ***
|
||||||
|
function TJvCustomPanel.GetFlat: Boolean;
|
||||||
|
begin
|
||||||
|
Result := not Ctl3D;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvCustomPanel.GetParentFlat: Boolean;
|
||||||
|
begin
|
||||||
|
Result := ParentCtl3D;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomPanel.SetFlat(const Value: Boolean);
|
||||||
|
begin
|
||||||
|
Ctl3D := not Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomPanel.SetParentFlat(const Value: Boolean);
|
||||||
|
begin
|
||||||
|
ParentCtl3D := Value;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomPanel.ReadCtl3D(Reader: TReader);
|
||||||
|
begin
|
||||||
|
Flat := not Reader.ReadBoolean;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomPanel.ReadParentCtl3D(Reader: TReader);
|
||||||
|
begin
|
||||||
|
ParentFlat := Reader.ReadBoolean;
|
||||||
|
end;
|
||||||
|
************************)
|
||||||
|
|
||||||
|
procedure TJvCustomPanel.Paint;
|
||||||
|
begin
|
||||||
|
inherited Paint;
|
||||||
|
PaintContent(ClientRect);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomPanel.PaintContent(const R: TRect);
|
||||||
|
begin
|
||||||
|
if Assigned(FOnPaintContent) then
|
||||||
|
FOnPaintContent(Self, Canvas, R);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomPanel.DefineProperties(Filer: TFiler);
|
||||||
|
begin
|
||||||
|
inherited DefineProperties(Filer);
|
||||||
|
(**************** NOT CONVERTED ****
|
||||||
|
Filer.DefineProperty('Ctl3D', ReadCtl3D, nil, False);
|
||||||
|
Filer.DefineProperty('ParentCtl3D', ReadParentCtl3D, nil, False);
|
||||||
|
***********************************)
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
@ -64,7 +64,9 @@ const
|
|||||||
******************** NOT CONVERTED *)
|
******************** NOT CONVERTED *)
|
||||||
|
|
||||||
type
|
type
|
||||||
|
(********************** NOT CONVERTED ****
|
||||||
TJvHotTrackOptions = class;
|
TJvHotTrackOptions = class;
|
||||||
|
*****************************************)
|
||||||
|
|
||||||
{ IJvExControl is used for the identification of an JvExXxx control. }
|
{ IJvExControl is used for the identification of an JvExXxx control. }
|
||||||
IJvExControl = interface
|
IJvExControl = interface
|
||||||
@ -79,6 +81,7 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
(***************************** NOT CONVERTED ****
|
||||||
{ IJvHotTrack is Specifies whether Control are highlighted when the mouse passes over them}
|
{ IJvHotTrack is Specifies whether Control are highlighted when the mouse passes over them}
|
||||||
IJvHotTrack = interface
|
IJvHotTrack = interface
|
||||||
['{8F1B40FB-D8E3-46FE-A7A3-21CE4B199A8F}']
|
['{8F1B40FB-D8E3-46FE-A7A3-21CE4B199A8F}']
|
||||||
@ -118,6 +121,7 @@ type
|
|||||||
property FrameVisible: Boolean read FFrameVisible write SetFrameVisible default False;
|
property FrameVisible: Boolean read FFrameVisible write SetFrameVisible default False;
|
||||||
property FrameColor: TColor read FFrameColor write SetFrameColor default $006A240A;
|
property FrameColor: TColor read FFrameColor write SetFrameColor default $006A240A;
|
||||||
end;
|
end;
|
||||||
|
***********************)
|
||||||
|
|
||||||
type
|
type
|
||||||
TStructPtrMessage = class(TObject)
|
TStructPtrMessage = class(TObject)
|
||||||
@ -133,8 +137,11 @@ type
|
|||||||
procedure DrawDotNetControl(Control: TWinControl; AColor: TColor; InControl: Boolean);
|
procedure DrawDotNetControl(Control: TWinControl; AColor: TColor; InControl: Boolean);
|
||||||
procedure HandleDotNetHighlighting(Control: TWinControl; const Msg: TLMessage;
|
procedure HandleDotNetHighlighting(Control: TWinControl; const Msg: TLMessage;
|
||||||
MouseOver: Boolean; Color: TColor);
|
MouseOver: Boolean; Color: TColor);
|
||||||
function CreateWMMessage(Msg: Integer; WParam: PtrInt; LParam: PtrInt): TLMessage; overload; {$IFDEF SUPPORTS_INLINE} inline {$ENDIF}
|
|
||||||
function CreateWMMessage(Msg: Integer; WParam: PtrInt; LParam: TControl): TLMessage; overload; {$IFDEF SUPPORTS_INLINE} inline {$ENDIF}
|
procedure CreateWMMessage(var Mesg: TLMessage; Msg: Cardinal; WParam: WPARAM; LParam: LPARAM); overload; {$IFDEF SUPPORTS_INLINE} inline {$ENDIF}
|
||||||
|
//function CreateWMMessage(Msg: Integer; WParam: PtrInt; LParam: PtrInt): TLMessage; overload; {$IFDEF SUPPORTS_INLINE} inline {$ENDIF}
|
||||||
|
//function CreateWMMessage(Msg: Integer; WParam: PtrInt; LParam: TControl): TLMessage; overload; {$IFDEF SUPPORTS_INLINE} inline {$ENDIF}
|
||||||
|
|
||||||
function SmallPointToLong(const Pt: TSmallPoint): LongInt; {$IFDEF SUPPORTS_INLINE} inline {$ENDIF}
|
function SmallPointToLong(const Pt: TSmallPoint): LongInt; {$IFDEF SUPPORTS_INLINE} inline {$ENDIF}
|
||||||
function ShiftStateToKeyData(Shift: TShiftState): Longint;
|
function ShiftStateToKeyData(Shift: TShiftState): Longint;
|
||||||
|
|
||||||
@ -153,6 +160,11 @@ type
|
|||||||
//******************** NOT CONVERTED
|
//******************** NOT CONVERTED
|
||||||
//WINCONTROL_DECL_DEFAULT(WinControl)
|
//WINCONTROL_DECL_DEFAULT(WinControl)
|
||||||
|
|
||||||
|
TJvDoEraseBackgroundMethod = function(Canvas: TCanvas; Param: LPARAM): Boolean of object;
|
||||||
|
|
||||||
|
function IsDefaultEraseBackground(Method: TJvDoEraseBackgroundMethod; MethodPtr: Pointer): Boolean;
|
||||||
|
|
||||||
|
type
|
||||||
TJvExCustomControl = class(TCustomControl)
|
TJvExCustomControl = class(TCustomControl)
|
||||||
private
|
private
|
||||||
// TODO:
|
// TODO:
|
||||||
@ -163,9 +175,9 @@ type
|
|||||||
FOnMouseEnter: TNotifyEvent;
|
FOnMouseEnter: TNotifyEvent;
|
||||||
FOnMouseLeave: TNotifyEvent;
|
FOnMouseLeave: TNotifyEvent;
|
||||||
FOnParentColorChanged: TNotifyEvent;
|
FOnParentColorChanged: TNotifyEvent;
|
||||||
function BaseWndProc(Msg: Integer; WParam: PtrInt = 0; LParam: Longint = 0): Integer; overload;
|
function BaseWndProc(Msg: Integer; WParam: PtrInt = 0; LParam: Longint = 0): LRESULT; overload;
|
||||||
function BaseWndProc(Msg: Integer; WParam: Ptrint; LParam: TControl): Integer; overload;
|
function BaseWndProc(Msg: Integer; WParam: Ptrint; LParam: TControl): LRESULT; overload;
|
||||||
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
|
function BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): LRESULT;
|
||||||
protected
|
protected
|
||||||
procedure WndProc(var Msg: TLMessage); override;
|
procedure WndProc(var Msg: TLMessage); override;
|
||||||
procedure FocusChanged(AControl: TWinControl); dynamic;
|
procedure FocusChanged(AControl: TWinControl); dynamic;
|
||||||
@ -348,6 +360,15 @@ end;
|
|||||||
begin
|
begin
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure CreateWMMessage(var Mesg: TLMessage; Msg: Cardinal; WParam: WPARAM; LParam: LPARAM);
|
||||||
|
begin
|
||||||
|
Mesg.Msg := Msg;
|
||||||
|
Mesg.WParam := WParam;
|
||||||
|
Mesg.LParam := LParam;
|
||||||
|
Mesg.Result := 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ --- replaced by newer version above
|
||||||
function CreateWMMessage(Msg: Integer; WParam: PtrInt; LParam: PtrInt): TLMessage;
|
function CreateWMMessage(Msg: Integer; WParam: PtrInt; LParam: PtrInt): TLMessage;
|
||||||
begin
|
begin
|
||||||
Result.Msg := Msg;
|
Result.Msg := Msg;
|
||||||
@ -360,6 +381,7 @@ function CreateWMMessage(Msg: Integer; WParam: PtrInt; LParam: TControl): TLMess
|
|||||||
begin
|
begin
|
||||||
Result := CreateWMMessage(Msg, WParam, Ptrint(LParam));
|
Result := CreateWMMessage(Msg, WParam, Ptrint(LParam));
|
||||||
end;
|
end;
|
||||||
|
}
|
||||||
|
|
||||||
{ TStructPtrMessage }
|
{ TStructPtrMessage }
|
||||||
constructor TStructPtrMessage.Create(AMsg: Integer; WParam: Integer; var LParam);
|
constructor TStructPtrMessage.Create(AMsg: Integer; WParam: Integer; var LParam);
|
||||||
@ -483,6 +505,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
(**************************** NOT CONVERTED ***
|
||||||
|
|
||||||
//=== { TJvHotTrackOptions } ======================================
|
//=== { TJvHotTrackOptions } ======================================
|
||||||
|
|
||||||
@ -561,6 +584,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
*********************************)
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
//******************** NOT CONVERTED
|
//******************** NOT CONVERTED
|
||||||
@ -579,18 +604,14 @@ function TJvExGraphicControl.BaseWndProc(Msg: Integer; WParam: Integer = 0; LPar
|
|||||||
var
|
var
|
||||||
Mesg: TLMessage;
|
Mesg: TLMessage;
|
||||||
begin
|
begin
|
||||||
Mesg := CreateWMMessage(Msg, WParam, LParam);
|
CreateWMMessage(Mesg, Msg, WParam, LParam);
|
||||||
inherited WndProc(Mesg);
|
inherited WndProc(Mesg);
|
||||||
Result := Mesg.Result;
|
Result := Mesg.Result;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TJvExGraphicControl.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
|
function TJvExGraphicControl.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
|
||||||
var
|
|
||||||
Mesg: TLMessage;
|
|
||||||
begin
|
begin
|
||||||
Mesg := CreateWMMessage(Msg, WParam, LParam);
|
Result := BaseWndProc(Msg, WParam, LCLType.LPARAM(LParam));
|
||||||
inherited WndProc(Mesg);
|
|
||||||
Result := Mesg.Result;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TJvExGraphicControl.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
|
function TJvExGraphicControl.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
|
||||||
@ -758,31 +779,35 @@ end;
|
|||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
|
function IsDefaultEraseBackground(Method: TJvDoEraseBackgroundMethod;
|
||||||
|
MethodPtr: Pointer): Boolean;
|
||||||
|
begin
|
||||||
|
Result := TMethod(Method).Code = MethodPtr;
|
||||||
|
end;
|
||||||
|
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
constructor TJvExCustomControl.Create(AOwner: TComponent);
|
constructor TJvExCustomControl.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
FHintColor := clDefault;
|
FHintColor := clDefault;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TJvExCustomControl.BaseWndProc(Msg: Integer; WParam: PtrInt = 0; LParam: Longint = 0): Integer;
|
function TJvExCustomControl.BaseWndProc(Msg: Integer; WParam: PtrInt = 0; LParam: Longint = 0): LRESULT;
|
||||||
var
|
var
|
||||||
Mesg: TLMessage;
|
Mesg: TLMessage;
|
||||||
begin
|
begin
|
||||||
Mesg := CreateWMMessage(Msg, WParam, LParam);
|
CreateWMMessage(Mesg, Msg, WParam, LParam);
|
||||||
inherited WndProc(Mesg);
|
inherited WndProc(Mesg);
|
||||||
Result := Mesg.Result;
|
Result := Mesg.Result;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TJvExCustomControl.BaseWndProc(Msg: Integer; WParam: PtrInt; LParam: TControl): Integer;
|
function TJvExCustomControl.BaseWndProc(Msg: Integer; WParam: PtrInt; LParam: TControl): LRESULT;
|
||||||
var
|
|
||||||
Mesg: TLMessage;
|
|
||||||
begin
|
begin
|
||||||
Mesg := CreateWMMessage(Msg, WParam, LParam);
|
Result := BaseWndProc(Msg, WParam, LCLType.LPARAM(LParam));
|
||||||
inherited WndProc(Mesg);
|
|
||||||
Result := Mesg.Result;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TJvExCustomControl.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
|
function TJvExCustomControl.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): LRESULT;
|
||||||
var
|
var
|
||||||
Mesg: TStructPtrMessage;
|
Mesg: TStructPtrMessage;
|
||||||
begin
|
begin
|
||||||
|
@ -44,7 +44,9 @@ unit JvExExtCtrls;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, Controls, ExtCtrls, Forms, Graphics, JvExControls, LCLIntf, LMessages;
|
LCLIntf, LCLType, LMessages,
|
||||||
|
Classes, Controls, ExtCtrls, Forms, Graphics,
|
||||||
|
JvExControls;
|
||||||
|
|
||||||
type
|
type
|
||||||
//******************** NOT CONVERTED
|
//******************** NOT CONVERTED
|
||||||
@ -62,6 +64,66 @@ type
|
|||||||
//******************** NOT CONVERTED
|
//******************** NOT CONVERTED
|
||||||
//WINCONTROL_DECL_DEFAULT(CustomPanel)
|
//WINCONTROL_DECL_DEFAULT(CustomPanel)
|
||||||
|
|
||||||
|
TJvExCustomPanel = class(TCustomPanel, IJvExControl)
|
||||||
|
private
|
||||||
|
FHintColor: TColor;
|
||||||
|
FMouseOver: Boolean;
|
||||||
|
FHintWindowClass: THintWindowClass;
|
||||||
|
FOnMouseEnter: TNotifyEvent;
|
||||||
|
FOnMouseLeave: TNotifyEvent;
|
||||||
|
FOnParentColorChanged: TNotifyEvent;
|
||||||
|
function BaseWndProc(Msg: Cardinal; WParam: WPARAM = 0; LParam: LPARAM = 0): LRESULT; overload;
|
||||||
|
function BaseWndProc(Msg: Cardinal; WParam: WPARAM; LParam: TObject): LRESULT; overload;
|
||||||
|
function BaseWndProcEx(Msg: Cardinal; WParam: WPARAM; var StructLParam): LRESULT;
|
||||||
|
protected
|
||||||
|
procedure WndProc(var Msg: TLMessage); override;
|
||||||
|
procedure FocusChanged(AControl: TWinControl); dynamic;
|
||||||
|
procedure VisibleChanged; reintroduce; dynamic;
|
||||||
|
procedure EnabledChanged; reintroduce; dynamic;
|
||||||
|
procedure TextChanged; reintroduce; virtual;
|
||||||
|
procedure ColorChanged; reintroduce; dynamic;
|
||||||
|
procedure FontChanged; reintroduce; dynamic;
|
||||||
|
procedure ParentFontChanged; reintroduce; dynamic;
|
||||||
|
procedure ParentColorChanged; reintroduce; dynamic;
|
||||||
|
procedure ParentShowHintChanged; reintroduce; dynamic;
|
||||||
|
function WantKey(Key: Integer; Shift: TShiftState): Boolean; virtual;
|
||||||
|
function HintShow(var HintInfo: THintInfo): Boolean; reintroduce; dynamic;
|
||||||
|
function HitTest(X, Y: Integer): Boolean; reintroduce; virtual;
|
||||||
|
procedure MouseEnter; override;
|
||||||
|
procedure MouseLeave; override;
|
||||||
|
property MouseOver: Boolean read FMouseOver write FMouseOver;
|
||||||
|
property HintColor: TColor read FHintColor write FHintColor default clDefault;
|
||||||
|
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
|
||||||
|
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
|
||||||
|
property OnParentColorChange: TNotifyEvent read FOnParentColorChanged write FOnParentColorChanged;
|
||||||
|
public
|
||||||
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
property HintWindowClass: THintWindowClass read FHintWindowClass write FHintWindowClass;
|
||||||
|
private
|
||||||
|
FDotNetHighlighting: Boolean;
|
||||||
|
protected
|
||||||
|
procedure BoundsChanged; reintroduce; virtual;
|
||||||
|
procedure CursorChanged; reintroduce; dynamic;
|
||||||
|
procedure ShowingChanged; reintroduce; dynamic;
|
||||||
|
procedure ShowHintChanged; reintroduce; dynamic;
|
||||||
|
procedure ControlsListChanging(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
|
||||||
|
procedure ControlsListChanged(Control: TControl; Inserting: Boolean); reintroduce; dynamic;
|
||||||
|
procedure GetDlgCode(var Code: TDlgCodes); virtual;
|
||||||
|
procedure FocusSet(PrevWnd: THandle); virtual;
|
||||||
|
procedure FocusKilled(NextWnd: THandle); virtual;
|
||||||
|
function DoEraseBackground(ACanvas: TCanvas; AParam: LPARAM): Boolean; virtual;
|
||||||
|
{$IFDEF JVCLThemesEnabledD6}
|
||||||
|
private
|
||||||
|
function GetParentBackground: Boolean;
|
||||||
|
protected
|
||||||
|
procedure SetParentBackground(Value: Boolean); virtual;
|
||||||
|
property ParentBackground: Boolean read GetParentBackground write SetParentBackground;
|
||||||
|
{$ENDIF JVCLThemesEnabledD6}
|
||||||
|
published
|
||||||
|
property DotNetHighlighting: Boolean read FDotNetHighlighting write FDotNetHighlighting default False;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
(******************** NOT CONVERTED
|
(******************** NOT CONVERTED
|
||||||
TJvExPubCustomPanel = class(TJvExCustomPanel)
|
TJvExPubCustomPanel = class(TJvExCustomPanel)
|
||||||
COMMON_PUBLISHED
|
COMMON_PUBLISHED
|
||||||
@ -185,6 +247,307 @@ uses
|
|||||||
//******************** NOT CONVERTED
|
//******************** NOT CONVERTED
|
||||||
//WINCONTROL_IMPL_DEFAULT(Panel)
|
//WINCONTROL_IMPL_DEFAULT(Panel)
|
||||||
|
|
||||||
|
constructor TJvExCustomPanel.Create(AOwner: TComponent);
|
||||||
|
begin
|
||||||
|
inherited Create(AOwner);
|
||||||
|
FHintColor := clDefault;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvExCustomPanel.BaseWndProc(Msg: Cardinal; WParam: WPARAM = 0; LParam: LPARAM = 0): LRESULT;
|
||||||
|
var
|
||||||
|
Mesg: TLMessage;
|
||||||
|
begin
|
||||||
|
CreateWMMessage(Mesg, Msg, WParam, LParam);
|
||||||
|
inherited WndProc(Mesg);
|
||||||
|
Result := Mesg.Result;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvExCustomPanel.BaseWndProc(Msg: Cardinal; WParam: WPARAM; LParam: TObject): LRESULT;
|
||||||
|
begin
|
||||||
|
Result := BaseWndProc(Msg, WParam, LCLType.LPARAM(LParam));
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvExCustomPanel.BaseWndProcEx(Msg: Cardinal; WParam: WPARAM; var StructLParam): LRESULT;
|
||||||
|
begin
|
||||||
|
Result := BaseWndProc(Msg, WParam, LCLType.LPARAM(@StructLParam));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.VisibleChanged;
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_VISIBLECHANGED);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.EnabledChanged;
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_ENABLEDCHANGED);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.TextChanged;
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_TEXTCHANGED);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.FontChanged;
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_FONTCHANGED);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.ColorChanged;
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_COLORCHANGED);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.ParentFontChanged;
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_PARENTFONTCHANGED);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.ParentColorChanged;
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_PARENTCOLORCHANGED);
|
||||||
|
if Assigned(OnParentColorChange) then
|
||||||
|
OnParentColorChange(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.ParentShowHintChanged;
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_PARENTSHOWHINTCHANGED);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvExCustomPanel.WantKey(Key: Integer; Shift: TShiftState): Boolean;
|
||||||
|
begin
|
||||||
|
Result := BaseWndProc(CM_DIALOGCHAR, Word(Key), ShiftStateToKeyData(Shift)) <> 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvExCustomPanel.HitTest(X, Y: Integer): Boolean;
|
||||||
|
begin
|
||||||
|
Result := BaseWndProc(CM_HITTEST, 0, SmallPointToLong(PointToSmallPoint(Point(X, Y)))) <> 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvExCustomPanel.HintShow(var HintInfo: THintInfo): Boolean;
|
||||||
|
begin
|
||||||
|
GetHintColor(HintInfo, Self, FHintColor);
|
||||||
|
if FHintWindowClass <> nil then
|
||||||
|
HintInfo.HintWindowClass := FHintWindowClass;
|
||||||
|
Result := BaseWndProcEx(CM_HINTSHOW, 0, HintInfo) <> 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.MouseEnter;
|
||||||
|
begin
|
||||||
|
inherited;
|
||||||
|
FMouseOver := True;
|
||||||
|
{ --not needed
|
||||||
|
if Assigned(FOnMouseEnter) then
|
||||||
|
FOnMouseEnter(Self);
|
||||||
|
BaseWndProc(CM_MOUSEENTER, 0, AControl);
|
||||||
|
------}
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.MouseLeave;
|
||||||
|
begin
|
||||||
|
FMouseOver := False;
|
||||||
|
inherited;
|
||||||
|
{ ------ not needed in LCL
|
||||||
|
BaseWndProc(CM_MOUSELEAVE, 0, AControl);
|
||||||
|
if Assigned(FOnMouseLeave) then
|
||||||
|
FOnMouseLeave(Self);
|
||||||
|
------------- }
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.FocusChanged(AControl: TWinControl);
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_FOCUSCHANGED, 0, AControl);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.BoundsChanged;
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.CursorChanged;
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_CURSORCHANGED);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.ShowingChanged;
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_SHOWINGCHANGED);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.ShowHintChanged;
|
||||||
|
begin
|
||||||
|
BaseWndProc(CM_SHOWHINTCHANGED);
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ VCL sends CM_CONTROLLISTCHANGE and CM_CONTROLCHANGE in a different order than
|
||||||
|
the CLX methods are used. So we must correct it by evaluating "Inserting". }
|
||||||
|
procedure TJvExCustomPanel.ControlsListChanging(Control: TControl; Inserting: Boolean);
|
||||||
|
begin
|
||||||
|
if Inserting then
|
||||||
|
BaseWndProc(CM_CONTROLLISTCHANGE, WPARAM(Control), LPARAM(Inserting))
|
||||||
|
else
|
||||||
|
BaseWndProc(CM_CONTROLCHANGE, WPARAM(Control), LPARAM(Inserting));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.ControlsListChanged(Control: TControl; Inserting: Boolean);
|
||||||
|
begin
|
||||||
|
if not Inserting then
|
||||||
|
BaseWndProc(CM_CONTROLLISTCHANGE, WPARAM(Control), LPARAM(Inserting))
|
||||||
|
else
|
||||||
|
BaseWndProc(CM_CONTROLCHANGE, WPARAM(Control), LPARAM(Inserting));
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.GetDlgCode(var Code: TDlgCodes);
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.FocusSet(PrevWnd: THandle);
|
||||||
|
begin
|
||||||
|
BaseWndProc(LM_SETFOCUS, WPARAM(PrevWnd), 0);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.FocusKilled(NextWnd: THandle);
|
||||||
|
begin
|
||||||
|
BaseWndProc(LM_KILLFOCUS, WPARAM(NextWnd), 0);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvExCustomPanel.DoEraseBackground(ACanvas: TCanvas; AParam: LPARAM): Boolean;
|
||||||
|
begin
|
||||||
|
Result := BaseWndProc(LM_ERASEBKGND, ACanvas.Handle, AParam) <> 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{$IFDEF JVCLThemesEnabledD6}
|
||||||
|
function TJvExCustomPanel.GetParentBackground: Boolean;
|
||||||
|
begin
|
||||||
|
Result := JvThemes.GetParentBackground(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.SetParentBackground(Value: Boolean);
|
||||||
|
begin
|
||||||
|
JvThemes.SetParentBackground(Self, Value);
|
||||||
|
end;
|
||||||
|
{$ENDIF JVCLThemesEnabledD6}
|
||||||
|
|
||||||
|
procedure TJvExCustomPanel.WndProc(var Msg: TLMessage);
|
||||||
|
var
|
||||||
|
IdSaveDC: Integer;
|
||||||
|
DlgCodes: TDlgCodes;
|
||||||
|
lCanvas: TCanvas;
|
||||||
|
begin
|
||||||
|
if not DispatchIsDesignMsg(Self, Msg) then
|
||||||
|
begin
|
||||||
|
case Msg.Msg of
|
||||||
|
(*********** NOT CONVERTED ****
|
||||||
|
CM_DENYSUBCLASSING:
|
||||||
|
Msg.Result := LRESULT(Ord(GetInterfaceEntry(IJvDenySubClassing) <> nil));
|
||||||
|
*******************************)
|
||||||
|
CM_DIALOGCHAR:
|
||||||
|
with TCMDialogChar{$IFDEF CLR}.Create{$ENDIF}(Msg) do
|
||||||
|
Result := LRESULT(Ord(WantKey(CharCode, KeyDataToShiftState(KeyData))));
|
||||||
|
CM_HINTSHOW:
|
||||||
|
with TCMHintShow(Msg) do
|
||||||
|
Result := LRESULT(HintShow(HintInfo^));
|
||||||
|
CM_HITTEST:
|
||||||
|
with TCMHitTest(Msg) do
|
||||||
|
Result := LRESULT(HitTest(XPos, YPos));
|
||||||
|
{ -------------- not needed in LCL ----------
|
||||||
|
CM_MOUSEENTER:
|
||||||
|
MouseEnter(TControl(Msg.LParam));
|
||||||
|
CM_MOUSELEAVE:
|
||||||
|
MouseLeave(TControl(Msg.LParam));
|
||||||
|
--------------------------------------------}
|
||||||
|
CM_VISIBLECHANGED:
|
||||||
|
VisibleChanged;
|
||||||
|
CM_ENABLEDCHANGED:
|
||||||
|
EnabledChanged;
|
||||||
|
CM_TEXTCHANGED:
|
||||||
|
TextChanged;
|
||||||
|
CM_FONTCHANGED:
|
||||||
|
FontChanged;
|
||||||
|
CM_COLORCHANGED:
|
||||||
|
ColorChanged;
|
||||||
|
CM_FOCUSCHANGED:
|
||||||
|
FocusChanged(TWinControl(Msg.LParam));
|
||||||
|
CM_PARENTFONTCHANGED:
|
||||||
|
ParentFontChanged;
|
||||||
|
CM_PARENTCOLORCHANGED:
|
||||||
|
ParentColorChanged;
|
||||||
|
CM_PARENTSHOWHINTCHANGED:
|
||||||
|
ParentShowHintChanged;
|
||||||
|
CM_CURSORCHANGED:
|
||||||
|
CursorChanged;
|
||||||
|
CM_SHOWINGCHANGED:
|
||||||
|
ShowingChanged;
|
||||||
|
CM_SHOWHINTCHANGED:
|
||||||
|
ShowHintChanged;
|
||||||
|
CM_CONTROLLISTCHANGE:
|
||||||
|
if Msg.LParam <> 0 then
|
||||||
|
ControlsListChanging(TControl(Msg.WParam), True)
|
||||||
|
else
|
||||||
|
ControlsListChanged(TControl(Msg.WParam), False);
|
||||||
|
CM_CONTROLCHANGE:
|
||||||
|
if Msg.LParam = 0 then
|
||||||
|
ControlsListChanging(TControl(Msg.WParam), False)
|
||||||
|
else
|
||||||
|
ControlsListChanged(TControl(Msg.WParam), True);
|
||||||
|
LM_SETFOCUS:
|
||||||
|
FocusSet(THandle(Msg.WParam));
|
||||||
|
LM_KILLFOCUS:
|
||||||
|
FocusKilled(THandle(Msg.WParam));
|
||||||
|
LM_SIZE, LM_MOVE:
|
||||||
|
begin
|
||||||
|
inherited WndProc(Msg);
|
||||||
|
BoundsChanged;
|
||||||
|
end;
|
||||||
|
LM_ERASEBKGND:
|
||||||
|
if (Msg.WParam <> 0) and not IsDefaultEraseBackground(@DoEraseBackground, @TJvExCustomPanel.DoEraseBackground) then
|
||||||
|
begin
|
||||||
|
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against Stock-Objects from Canvas
|
||||||
|
lCanvas := TCanvas.Create;
|
||||||
|
try
|
||||||
|
lCanvas.Handle := HDC(Msg.WParam);
|
||||||
|
Msg.Result := Ord(DoEraseBackground(lCanvas, Msg.LParam));
|
||||||
|
finally
|
||||||
|
lCanvas.Handle := 0;
|
||||||
|
lCanvas.Free;
|
||||||
|
RestoreDC(HDC(Msg.WParam), IdSaveDC);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
inherited WndProc(Msg);
|
||||||
|
(*************************** NOT CONVERTED ***
|
||||||
|
{$IFNDEF DELPHI2007_UP}
|
||||||
|
LM_PRINTCLIENT, LM_PRINT: // VCL bug fix
|
||||||
|
begin
|
||||||
|
IdSaveDC := SaveDC(HDC(Msg.WParam)); // protect DC against changes
|
||||||
|
try
|
||||||
|
inherited WndProc(Msg);
|
||||||
|
finally
|
||||||
|
RestoreDC(HDC(Msg.WParam), IdSaveDC);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
{$ENDIF ~DELPHI2007_UP}
|
||||||
|
*********************************************)
|
||||||
|
LM_GETDLGCODE:
|
||||||
|
begin
|
||||||
|
inherited WndProc(Msg);
|
||||||
|
DlgCodes := [dcNative] + DlgcToDlgCodes(Msg.Result);
|
||||||
|
GetDlgCode(DlgCodes);
|
||||||
|
if not (dcNative in DlgCodes) then
|
||||||
|
Msg.Result := DlgCodesToDlgc(DlgCodes);
|
||||||
|
end;
|
||||||
|
else
|
||||||
|
inherited WndProc(Msg);
|
||||||
|
end;
|
||||||
|
case Msg.Msg of // precheck message to prevent access violations on released controls
|
||||||
|
CM_MOUSEENTER, CM_MOUSELEAVE, LM_KILLFOCUS, LM_SETFOCUS, LM_NCPAINT:
|
||||||
|
if DotNetHighlighting then
|
||||||
|
HandleDotNetHighlighting(Self, Msg, MouseOver, Color);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//******************** NOT CONVERTED
|
//******************** NOT CONVERTED
|
||||||
//WINCONTROL_IMPL_DEFAULT(RadioGroup)
|
//WINCONTROL_IMPL_DEFAULT(RadioGroup)
|
||||||
|
|
||||||
@ -222,18 +585,14 @@ function TJvExSplitter.BaseWndProc(Msg: Integer; WParam: Integer = 0; LParam: Lo
|
|||||||
var
|
var
|
||||||
Mesg: TLMessage;
|
Mesg: TLMessage;
|
||||||
begin
|
begin
|
||||||
Mesg := CreateWMMessage(Msg, WParam, LParam);
|
CreateWMMessage(Mesg, Msg, WParam, LParam);
|
||||||
inherited WndProc(Mesg);
|
inherited WndProc(Mesg);
|
||||||
Result := Mesg.Result;
|
Result := Mesg.Result;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TJvExSplitter.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
|
function TJvExSplitter.BaseWndProc(Msg: Integer; WParam: Integer; LParam: TControl): Integer;
|
||||||
var
|
|
||||||
Mesg: TLMessage;
|
|
||||||
begin
|
begin
|
||||||
Mesg := CreateWMMessage(Msg, WParam, LParam);
|
Result := BaseWndProc(Msg, WParam, LCLType.LPARAM(LParam));
|
||||||
inherited WndProc(Mesg);
|
|
||||||
Result := Mesg.Result;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TJvExSplitter.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
|
function TJvExSplitter.BaseWndProcEx(Msg: Integer; WParam: Integer; var LParam): Integer;
|
||||||
|
@ -1234,12 +1234,14 @@ type
|
|||||||
|
|
||||||
property OnChange: TIntegerListChange read FOnChange write FOnChange;
|
property OnChange: TIntegerListChange read FOnChange write FOnChange;
|
||||||
end;
|
end;
|
||||||
|
***************************)
|
||||||
|
|
||||||
type
|
type
|
||||||
TCollectionSortProc = function(Item1, Item2: TCollectionItem): Integer;
|
TCollectionSortProc = function(Item1, Item2: TCollectionItem): Integer;
|
||||||
|
|
||||||
procedure CollectionSort(Collection: Classes.TCollection; SortProc: TCollectionSortProc);
|
procedure CollectionSort(Collection: Classes.TCollection; SortProc: TCollectionSortProc);
|
||||||
|
|
||||||
|
(********************* NOT CONVERTED
|
||||||
{$IFDEF COMPILER5}
|
{$IFDEF COMPILER5}
|
||||||
function SecondsBetween(const Now: TDateTime; const FTime: TDateTime): Integer;
|
function SecondsBetween(const Now: TDateTime; const FTime: TDateTime): Integer;
|
||||||
{$ENDIF COMPILER5}
|
{$ENDIF COMPILER5}
|
||||||
@ -9851,6 +9853,8 @@ end;
|
|||||||
{$ENDIF COMPILER5}
|
{$ENDIF COMPILER5}
|
||||||
{$ENDIF !BCB}
|
{$ENDIF !BCB}
|
||||||
|
|
||||||
|
**********************)
|
||||||
|
|
||||||
procedure CollectionQuickSort(List: Classes.TCollection; L, R: Integer; SortProc: TCollectionSortProc);
|
procedure CollectionQuickSort(List: Classes.TCollection; L, R: Integer; SortProc: TCollectionSortProc);
|
||||||
var
|
var
|
||||||
I, J, pix: Integer;
|
I, J, pix: Integer;
|
||||||
@ -9902,6 +9906,7 @@ begin
|
|||||||
CollectionQuickSort(Collection, 0, Collection.Count - 1, SortProc);
|
CollectionQuickSort(Collection, 0, Collection.Count - 1, SortProc);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
(********************* NOT CONVERTED
|
||||||
{$IFDEF COMPILER5}
|
{$IFDEF COMPILER5}
|
||||||
function SecondsBetween(const Now: TDateTime; const FTime: TDateTime): Integer;
|
function SecondsBetween(const Now: TDateTime; const FTime: TDateTime): Integer;
|
||||||
begin
|
begin
|
||||||
|
@ -104,14 +104,19 @@ type
|
|||||||
// Base class for persistent properties that can show events.
|
// Base class for persistent properties that can show events.
|
||||||
// By default, Delphi and BCB don't show the events of a class
|
// By default, Delphi and BCB don't show the events of a class
|
||||||
// derived from TPersistent unless it also derives from
|
// derived from TPersistent unless it also derives from
|
||||||
// TComponent. However, up until version 5, you couldn't have
|
// TComponent.
|
||||||
// a Component as a Sub Component of another one, thus preventing
|
|
||||||
// from having events for a sub property.
|
|
||||||
// The design time editor associated with TJvPersistent will display
|
// The design time editor associated with TJvPersistent will display
|
||||||
// the events, thus mimicking a Sub Component.
|
// the events, thus mimicking a Sub Component.
|
||||||
TJvPersistent = class(TComponent)
|
TJvPersistent = class(TComponent)
|
||||||
|
private
|
||||||
|
FOwner: TPersistent;
|
||||||
|
function _GetOwner: TPersistent;
|
||||||
|
protected
|
||||||
|
function GetOwner: TPersistent; override;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TPersistent); reintroduce; virtual;
|
||||||
|
function GetNamePath: string; override;
|
||||||
|
property Owner: TPersistent read _GetOwner;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Added by dejoy (2005-04-20)
|
// Added by dejoy (2005-04-20)
|
||||||
@ -120,13 +125,13 @@ type
|
|||||||
// and property change notify.
|
// and property change notify.
|
||||||
TJvPropertyChangeEvent = procedure(Sender: TObject; const PropName: string) of object;
|
TJvPropertyChangeEvent = procedure(Sender: TObject; const PropName: string) of object;
|
||||||
|
|
||||||
TJvPersistentProperty = class(TPersistent) // ?? TJvPersistent)
|
TJvPersistentProperty = class(TJvPersistent)
|
||||||
private
|
private
|
||||||
FUpdateCount: Integer;
|
FUpdateCount: Integer;
|
||||||
FOnChanging: TNotifyEvent;
|
FOnChanging: TNotifyEvent;
|
||||||
FOnChange: TNotifyEvent;
|
FOnChanged: TNotifyEvent;
|
||||||
FOnChangingProperty: TJvPropertyChangeEvent;
|
FOnChangingProperty: TJvPropertyChangeEvent;
|
||||||
FOnChangeProperty: TJvPropertyChangeEvent;
|
FOnChangedProperty: TJvPropertyChangeEvent;
|
||||||
protected
|
protected
|
||||||
procedure Changed; virtual;
|
procedure Changed; virtual;
|
||||||
procedure Changing; virtual;
|
procedure Changing; virtual;
|
||||||
@ -137,9 +142,9 @@ type
|
|||||||
public
|
public
|
||||||
procedure BeginUpdate; virtual;
|
procedure BeginUpdate; virtual;
|
||||||
procedure EndUpdate; virtual;
|
procedure EndUpdate; virtual;
|
||||||
property OnChange: TNotifyEvent read FOnChange write FOnChange;
|
property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
|
||||||
property OnChanging: TNotifyEvent read FOnChanging write FOnChanging;
|
property OnChanging: TNotifyEvent read FOnChanging write FOnChanging;
|
||||||
property OnChangeProperty: TJvPropertyChangeEvent read FOnChangeProperty write FOnChangeProperty;
|
property OnChangedProperty: TJvPropertyChangeEvent read FOnChangedProperty write FOnChangedProperty;
|
||||||
property OnChangingProperty: TJvPropertyChangeEvent read FOnChangingProperty write FOnChangingProperty;
|
property OnChangingProperty: TJvPropertyChangeEvent read FOnChangingProperty write FOnChangingProperty;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -351,8 +356,8 @@ const
|
|||||||
CenturyOffset: Byte = 60;
|
CenturyOffset: Byte = 60;
|
||||||
NullDate: TDateTime = 0; {-693594}
|
NullDate: TDateTime = 0; {-693594}
|
||||||
|
|
||||||
(*********** NOT CONVERTED
|
|
||||||
type
|
type
|
||||||
|
(*********** NOT CONVERTED
|
||||||
// JvDriveCtrls / JvLookOut
|
// JvDriveCtrls / JvLookOut
|
||||||
TJvImageSize = (isSmall, isLarge);
|
TJvImageSize = (isSmall, isLarge);
|
||||||
TJvImageAlign = (iaLeft, iaCentered);
|
TJvImageAlign = (iaLeft, iaCentered);
|
||||||
@ -361,8 +366,7 @@ type
|
|||||||
TJvDriveTypes = set of TJvDriveType;
|
TJvDriveTypes = set of TJvDriveType;
|
||||||
********************)
|
********************)
|
||||||
|
|
||||||
type
|
// Defines how a property (like a HotTrackFont) follows changes in the component's normal Font
|
||||||
// Defines how a property (like a HotTrackFont) follows changes in the component's normal Font
|
|
||||||
TJvTrackFontOption = (
|
TJvTrackFontOption = (
|
||||||
hoFollowFont, // makes HotTrackFont follow changes to the normal Font
|
hoFollowFont, // makes HotTrackFont follow changes to the normal Font
|
||||||
hoPreserveCharSet, // don't change HotTrackFont.Charset
|
hoPreserveCharSet, // don't change HotTrackFont.Charset
|
||||||
@ -370,11 +374,16 @@ type
|
|||||||
hoPreserveHeight, // don't change HotTrackFont.Height (affects Size as well)
|
hoPreserveHeight, // don't change HotTrackFont.Height (affects Size as well)
|
||||||
hoPreserveName, // don't change HotTrackFont.Name
|
hoPreserveName, // don't change HotTrackFont.Name
|
||||||
hoPreservePitch, // don't change HotTrackFont.Pitch
|
hoPreservePitch, // don't change HotTrackFont.Pitch
|
||||||
hoPreserveStyle); // don't change HotTrackFont.Style
|
hoPreserveStyle, // don't change HotTrackFont.Style
|
||||||
|
hoPreserveOrientation, // don't change HotTrackFont.Orientation
|
||||||
|
hoPreserveQuality // don't change HotTrackFont.Quality
|
||||||
|
);
|
||||||
TJvTrackFontOptions = set of TJvTrackFontOption;
|
TJvTrackFontOptions = set of TJvTrackFontOption;
|
||||||
|
|
||||||
const
|
const
|
||||||
DefaultTrackFontOptions = [hoFollowFont, hoPreserveColor, hoPreserveStyle];
|
DefaultTrackFontOptions = [hoFollowFont, hoPreserveColor, hoPreserveStyle];
|
||||||
|
DefaultHotTrackColor = $00D2BDB6;
|
||||||
|
DefaultHotTrackFrameColor = $006A240A;
|
||||||
|
|
||||||
(********************
|
(********************
|
||||||
type
|
type
|
||||||
@ -685,14 +694,52 @@ type
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
constructor TJvPersistent.Create(AOwner: TComponent);
|
{ TJvPersistent }
|
||||||
begin
|
|
||||||
inherited Create(AOwner);
|
|
||||||
|
|
||||||
|
constructor TJvPersistent.Create(AOwner: TPersistent);
|
||||||
|
begin
|
||||||
|
if AOwner is TComponent then
|
||||||
|
inherited Create(AOwner as TComponent)
|
||||||
|
else
|
||||||
|
inherited Create(nil);
|
||||||
SetSubComponent(True);
|
SetSubComponent(True);
|
||||||
Name := 'SubComponent';
|
|
||||||
|
FOwner := AOwner;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
type
|
||||||
|
TPersistentAccessProtected = class(TPersistent);
|
||||||
|
|
||||||
|
function TJvPersistent.GetNamePath: string;
|
||||||
|
var
|
||||||
|
S: string;
|
||||||
|
lOwner: TPersistent;
|
||||||
|
begin
|
||||||
|
Result := inherited GetNamePath;
|
||||||
|
lOwner := GetOwner; //Resturn Nested NamePath
|
||||||
|
if (lOwner <> nil)
|
||||||
|
and ( (csSubComponent in TComponent(lOwner).ComponentStyle)
|
||||||
|
or (TPersistentAccessProtected(lOwner).GetOwner <> nil)
|
||||||
|
)
|
||||||
|
then
|
||||||
|
begin
|
||||||
|
S := lOwner.GetNamePath;
|
||||||
|
if S <> '' then
|
||||||
|
Result := S + '.' + Result;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvPersistent.GetOwner: TPersistent;
|
||||||
|
begin
|
||||||
|
Result := FOwner;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvPersistent._GetOwner: TPersistent;
|
||||||
|
begin
|
||||||
|
Result := GetOwner;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{ TJvPersistentProperty }
|
{ TJvPersistentProperty }
|
||||||
|
|
||||||
procedure TJvPersistentProperty.BeginUpdate;
|
procedure TJvPersistentProperty.BeginUpdate;
|
||||||
@ -704,14 +751,14 @@ end;
|
|||||||
|
|
||||||
procedure TJvPersistentProperty.Changed;
|
procedure TJvPersistentProperty.Changed;
|
||||||
begin
|
begin
|
||||||
if (FUpdateCount = 0) and Assigned(FOnChange) then
|
if (FUpdateCount = 0) and Assigned(FOnChanged) then
|
||||||
FOnChange(Self);
|
FOnChanged(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TJvPersistentProperty.ChangedProperty(const PropName: string);
|
procedure TJvPersistentProperty.ChangedProperty(const PropName: string);
|
||||||
begin
|
begin
|
||||||
if Assigned(FOnChangeProperty) then
|
if Assigned(FOnChangedProperty) then
|
||||||
FOnChangeProperty(Self, PropName);
|
FOnChangedProperty(Self, PropName);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TJvPersistentProperty.Changing;
|
procedure TJvPersistentProperty.Changing;
|
||||||
|
335
components/jvcllaz/run/JvStdCtrls/jvhottrackpersistent.pas
Normal file
335
components/jvcllaz/run/JvStdCtrls/jvhottrackpersistent.pas
Normal file
@ -0,0 +1,335 @@
|
|||||||
|
{-----------------------------------------------------------------------------
|
||||||
|
The contents of this file are subject to the Mozilla Public License
|
||||||
|
Version 1.1 (the "License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
http://www.mozilla.org/MPL/MPL-1.1.html
|
||||||
|
|
||||||
|
Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
|
||||||
|
the specific language governing rights and limitations under the License.
|
||||||
|
|
||||||
|
The Original Code is: JvButtonPersistent.PAS, released on 2007-11-20.
|
||||||
|
|
||||||
|
The Initial Developer of the Original Code is dejoy den [dejoybbs att gmail dott com]
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
Contributor(s): dejoy.
|
||||||
|
|
||||||
|
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
|
||||||
|
located at http://jvcl.delphi-jedi.org
|
||||||
|
|
||||||
|
Known Issues:
|
||||||
|
-----------------------------------------------------------------------------}
|
||||||
|
// $Id$
|
||||||
|
|
||||||
|
unit JvHotTrackPersistent;
|
||||||
|
|
||||||
|
{$mode objfpc}{$H+}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
Classes, Graphics,
|
||||||
|
JvTypes;
|
||||||
|
|
||||||
|
type
|
||||||
|
TJvHotTrackOptionsClass = class of TJvHotTrackOptions;
|
||||||
|
|
||||||
|
TJvHotTrackOptions = class(TJvPersistentProperty)
|
||||||
|
private
|
||||||
|
FEnabled: Boolean;
|
||||||
|
FFrameVisible: Boolean;
|
||||||
|
FColor: TColor;
|
||||||
|
FFrameColor: TColor;
|
||||||
|
procedure SetColor(Value: TColor);
|
||||||
|
procedure SetEnabled(Value: Boolean);
|
||||||
|
procedure SetFrameColor(Value: TColor);
|
||||||
|
procedure SetFrameVisible(Value: Boolean);
|
||||||
|
public
|
||||||
|
constructor Create(AOwner: TPersistent); override;
|
||||||
|
procedure Assign(Source: TPersistent); override;
|
||||||
|
published
|
||||||
|
property Enabled: Boolean read FEnabled write SetEnabled default False;
|
||||||
|
property Color: TColor read FColor write SetColor default DefaultHotTrackColor;
|
||||||
|
property FrameVisible: Boolean read FFrameVisible write SetFrameVisible default False;
|
||||||
|
property FrameColor: TColor read FFrameColor write SetFrameColor default DefaultHotTrackFrameColor;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ IJvHotTrack specifies whether Controls are highlighted when the mouse passes over them }
|
||||||
|
IJvHotTrack = interface
|
||||||
|
['{8F1B40FB-D8E3-46FE-A7A3-21CE4B199A8F}']
|
||||||
|
|
||||||
|
function GetHotTrack: Boolean;
|
||||||
|
function GetHotTrackFont: TFont;
|
||||||
|
function GetHotTrackFontOptions: TJvTrackFontOptions;
|
||||||
|
function GetHotTrackOptions: TJvHotTrackOptions;
|
||||||
|
|
||||||
|
procedure SetHotTrack(Value: Boolean);
|
||||||
|
procedure SetHotTrackFont(Value: TFont);
|
||||||
|
procedure SetHotTrackFontOptions(Value: TJvTrackFontOptions);
|
||||||
|
procedure SetHotTrackOptions(Value: TJvHotTrackOptions);
|
||||||
|
procedure Assign(Source: IJvHotTrack);
|
||||||
|
|
||||||
|
property HotTrack: Boolean read GetHotTrack write SetHotTrack;
|
||||||
|
property HotTrackFont: TFont read GetHotTrackFont write SetHotTrackFont;
|
||||||
|
property HotTrackFontOptions: TJvTrackFontOptions read GetHotTrackFontOptions write SetHotTrackFontOptions;
|
||||||
|
property HotTrackOptions: TJvHotTrackOptions read GetHotTrackOptions write SetHotTrackOptions;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvCustomHotTrackPersistent = class(TJvPersistentProperty, IJvHotTrack)
|
||||||
|
private
|
||||||
|
FHotTrack: Boolean;
|
||||||
|
FHotTrackFont: TFont;
|
||||||
|
FHotTrackFontOptions: TJvTrackFontOptions;
|
||||||
|
FHotTrackOptions:TJvHotTrackOptions;
|
||||||
|
|
||||||
|
{IJvHotTrack}
|
||||||
|
function GetHotTrack: Boolean;
|
||||||
|
function GetHotTrackFont: TFont;
|
||||||
|
function GetHotTrackFontOptions: TJvTrackFontOptions;
|
||||||
|
function GetHotTrackOptions: TJvHotTrackOptions;
|
||||||
|
procedure SetHotTrack(Value: Boolean);
|
||||||
|
procedure SetHotTrackFont(Value: TFont);
|
||||||
|
procedure SetHotTrackFontOptions(Value: TJvTrackFontOptions);
|
||||||
|
procedure SetHotTrackOptions(Value: TJvHotTrackOptions);
|
||||||
|
|
||||||
|
procedure IJvHotTrack_Assign(Source: IJvHotTrack);
|
||||||
|
procedure IJvHotTrack.Assign = IJvHotTrack_Assign;
|
||||||
|
protected
|
||||||
|
class function GetHotTrackOptionsClass: TJvHotTrackOptionsClass; virtual;
|
||||||
|
procedure AssignTo(Dest: TPersistent); override;
|
||||||
|
public
|
||||||
|
constructor Create(AOwner: TPersistent); override;
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
procedure Assign(Source: TPersistent); override;
|
||||||
|
|
||||||
|
property HotTrack: Boolean read GetHotTrack write SetHotTrack default False;
|
||||||
|
property HotTrackFont: TFont read GetHotTrackFont write SetHotTrackFont;
|
||||||
|
property HotTrackFontOptions: TJvTrackFontOptions read GetHotTrackFontOptions write SetHotTrackFontOptions
|
||||||
|
default DefaultTrackFontOptions;
|
||||||
|
property HotTrackOptions: TJvHotTrackOptions read GetHotTrackOptions write SetHotTrackOptions;
|
||||||
|
end;
|
||||||
|
|
||||||
|
TJvHotTrackPersistent = class(TJvCustomHotTrackPersistent)
|
||||||
|
published
|
||||||
|
property HotTrack;
|
||||||
|
property HotTrackFont;
|
||||||
|
property HotTrackFontOptions;
|
||||||
|
property HotTrackOptions;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
uses
|
||||||
|
SysUtils;
|
||||||
|
|
||||||
|
|
||||||
|
{ TJvHotTrackOptions }
|
||||||
|
|
||||||
|
constructor TJvHotTrackOptions.Create(AOwner: TPersistent);
|
||||||
|
begin
|
||||||
|
inherited ;
|
||||||
|
FEnabled := False;
|
||||||
|
FFrameVisible := False;
|
||||||
|
FColor := DefaultHotTrackColor;
|
||||||
|
FFrameColor := DefaultHotTrackFrameColor;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvHotTrackOptions.Assign(Source: TPersistent);
|
||||||
|
begin
|
||||||
|
if Source is TJvHotTrackOptions then
|
||||||
|
begin
|
||||||
|
BeginUpdate;
|
||||||
|
try
|
||||||
|
Enabled := TJvHotTrackOptions(Source).Enabled;
|
||||||
|
Color := TJvHotTrackOptions(Source).Color;
|
||||||
|
FrameVisible := TJvHotTrackOptions(Source).FrameVisible;
|
||||||
|
FrameColor := TJvHotTrackOptions(Source).FrameColor;
|
||||||
|
finally
|
||||||
|
EndUpdate;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
inherited Assign(Source);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvHotTrackOptions.SetColor(Value: TColor);
|
||||||
|
begin
|
||||||
|
if FColor <> Value then
|
||||||
|
begin
|
||||||
|
Changing;
|
||||||
|
ChangingProperty('Color');
|
||||||
|
FColor := Value;
|
||||||
|
ChangedProperty('Color');
|
||||||
|
Changed;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvHotTrackOptions.SetEnabled(Value: Boolean);
|
||||||
|
begin
|
||||||
|
if FEnabled <> Value then
|
||||||
|
begin
|
||||||
|
Changing;
|
||||||
|
ChangingProperty('Enabled');
|
||||||
|
FEnabled := Value;
|
||||||
|
ChangedProperty('Enabled');
|
||||||
|
Changed;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvHotTrackOptions.SetFrameVisible(Value: Boolean);
|
||||||
|
begin
|
||||||
|
if FFrameVisible <> Value then
|
||||||
|
begin
|
||||||
|
Changing;
|
||||||
|
ChangingProperty('FrameVisible');
|
||||||
|
FFrameVisible := Value;
|
||||||
|
ChangedProperty('FrameVisible');
|
||||||
|
Changed;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvHotTrackOptions.SetFrameColor(Value: TColor);
|
||||||
|
begin
|
||||||
|
if FFrameColor <> Value then
|
||||||
|
begin
|
||||||
|
Changing;
|
||||||
|
ChangingProperty('FrameColor');
|
||||||
|
FFrameColor := Value;
|
||||||
|
ChangedProperty('FrameColor');
|
||||||
|
Changed;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{ TJvCustomHotTrackPersistent }
|
||||||
|
|
||||||
|
constructor TJvCustomHotTrackPersistent.Create(AOwner: TPersistent);
|
||||||
|
begin
|
||||||
|
inherited Create(AOwner);
|
||||||
|
|
||||||
|
FHotTrack := False;
|
||||||
|
FHotTrackFont := TFont.Create;
|
||||||
|
FHotTrackFontOptions := DefaultTrackFontOptions;
|
||||||
|
FHotTrackOptions :=GetHotTrackOptionsClass.Create(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TJvCustomHotTrackPersistent.Destroy;
|
||||||
|
begin
|
||||||
|
FHotTrackFont.Free;
|
||||||
|
FHotTrackOptions.Free;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
class function TJvCustomHotTrackPersistent.GetHotTrackOptionsClass: TJvHotTrackOptionsClass;
|
||||||
|
begin
|
||||||
|
Result := TJvHotTrackOptions;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomHotTrackPersistent.Assign(Source: TPersistent);
|
||||||
|
var
|
||||||
|
Intf: IJvHotTrack;
|
||||||
|
begin
|
||||||
|
if Supports(Source, IJvHotTrack, Intf) then
|
||||||
|
IJvHotTrack(Self).Assign(Intf)
|
||||||
|
else
|
||||||
|
inherited Assign(Source);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomHotTrackPersistent.AssignTo(Dest: TPersistent);
|
||||||
|
var
|
||||||
|
Intf: IJvHotTrack;
|
||||||
|
begin
|
||||||
|
if Supports(Dest, IJvHotTrack, Intf) then
|
||||||
|
Intf.Assign(Self)
|
||||||
|
else
|
||||||
|
inherited AssignTo(Dest);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomHotTrackPersistent.SetHotTrackFont(Value: TFont);
|
||||||
|
begin
|
||||||
|
if (FHotTrackFont<>Value) and (Value <> nil) then
|
||||||
|
begin
|
||||||
|
Changing;
|
||||||
|
ChangingProperty('HotTrackFont');
|
||||||
|
FHotTrackFont.Assign(Value);
|
||||||
|
ChangedProperty('HotTrackFont');
|
||||||
|
Changed;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomHotTrackPersistent.SetHotTrack(Value: Boolean);
|
||||||
|
begin
|
||||||
|
if FHotTrack <> Value then
|
||||||
|
begin
|
||||||
|
Changing;
|
||||||
|
ChangingProperty('HotTrack');
|
||||||
|
FHotTrack := Value;
|
||||||
|
ChangedProperty('HotTrack');
|
||||||
|
Changed;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomHotTrackPersistent.SetHotTrackFontOptions(Value: TJvTrackFontOptions);
|
||||||
|
begin
|
||||||
|
if FHotTrackFontOptions <> Value then
|
||||||
|
begin
|
||||||
|
Changing;
|
||||||
|
ChangingProperty('HotTrackFontOptions');
|
||||||
|
FHotTrackFontOptions := Value;
|
||||||
|
ChangedProperty('HotTrackFontOptions');
|
||||||
|
Changed;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvCustomHotTrackPersistent.GetHotTrack: Boolean;
|
||||||
|
begin
|
||||||
|
Result := FHotTrack;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvCustomHotTrackPersistent.GetHotTrackFont: TFont;
|
||||||
|
begin
|
||||||
|
Result := FHotTrackFont;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvCustomHotTrackPersistent.GetHotTrackFontOptions: TJvTrackFontOptions;
|
||||||
|
begin
|
||||||
|
Result := FHotTrackFontOptions;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TJvCustomHotTrackPersistent.GetHotTrackOptions: TJvHotTrackOptions;
|
||||||
|
begin
|
||||||
|
Result := FHotTrackOptions;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomHotTrackPersistent.SetHotTrackOptions(Value: TJvHotTrackOptions);
|
||||||
|
begin
|
||||||
|
if (FHotTrackOptions <> Value) and (Value <> nil) then
|
||||||
|
begin
|
||||||
|
Changing;
|
||||||
|
ChangingProperty('HotTrackOptions');
|
||||||
|
FHotTrackOptions.Assign(Value);
|
||||||
|
ChangedProperty('HotTrackOptions');
|
||||||
|
Changed;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TJvCustomHotTrackPersistent.IJvHotTrack_Assign(Source: IJvHotTrack);
|
||||||
|
begin
|
||||||
|
if (Source <> nil) and (IJvHotTrack(Self) <> Source) then
|
||||||
|
begin
|
||||||
|
BeginUpdate;
|
||||||
|
try
|
||||||
|
HotTrack := Source.HotTrack;
|
||||||
|
HotTrackFont := Source.HotTrackFont;
|
||||||
|
HotTrackFontOptions := Source.HotTrackFontOptions;
|
||||||
|
HotTrackOptions := Source.HotTrackOptions;
|
||||||
|
finally
|
||||||
|
EndUpdate;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
end.
|
1604
components/jvcllaz/run/JvStdCtrls/jvpanel.pas
Normal file
1604
components/jvcllaz/run/JvStdCtrls/jvpanel.pas
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user