Update of /cvsroot/jvcl/rm/source In directory sc8-pr-cvs1:/tmp/cvs-serv27024/source Modified Files: JvTMTL.pas JvTimLstEd.pas JvTimeLine.pas JvTimerLst.pas JvTipOfDay.pas JvTipOfDayProp.pas JvToolBar.pas JvToolEdit.pas JvToolReg.pas JvTransBtn.pas JvTransBtn2.pas JvTransLED.pas JvTransLEDReg.pas JvTranslator.pas JvTransparentForm.pas JvTransparentPanel.pas JvTrayIcon.pas JvTypedEdit.pas JvTypes.pas Log Message: cleaned Index: JvTMTL.pas =================================================================== RCS file: /cvsroot/jvcl/rm/source/JvTMTL.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** JvTMTL.pas 11 Feb 2003 14:23:29 -0000 1.2 --- JvTMTL.pas 13 Feb 2003 13:53:21 -0000 1.3 *************** *** 15,19 **** All Rights Reserved. ! Contributor(s): Last Modified: 2002-05-26 --- 15,19 ---- All Rights Reserved. ! Contributor(s): [...1984 lines suppressed...] if FShowToday <> Value then *************** *** 1258,1262 **** end; ! procedure TJvCustomTMTimeline.SetShowWeeks(const Value: boolean); begin if FShowWeeks <> Value then --- 1305,1309 ---- end; ! procedure TJvCustomTMTimeline.SetShowWeeks(const Value: Boolean); begin if FShowWeeks <> Value then *************** *** 1277,1278 **** --- 1324,1326 ---- end. + Index: JvTimLstEd.pas =================================================================== RCS file: /cvsroot/jvcl/rm/source/JvTimLstEd.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** JvTimLstEd.pas 11 Feb 2003 07:34:20 -0000 1.2 --- JvTimLstEd.pas 13 Feb 2003 13:53:21 -0000 1.3 *************** *** 13,17 **** The Initial Developers of the Original Code are: Fedor Koshevnikov, Igor Pavluk and Serge Korolev Copyright (c) 1997, 1998 Fedor Koshevnikov, Igor Pavluk and Serge Korolev ! Copyright (c) 2001,2002 SGB Software All Rights Reserved. --- 13,17 ---- The Initial Developers of the Original Code are: Fedor Koshevnikov, Igor Pavluk and Serge Korolev Copyright (c) 1997, 1998 Fedor Koshevnikov, Igor Pavluk and Serge Korolev ! Copyright (c) 2001,2002 SGB Software All Rights Reserved. *************** *** 30,44 **** interface ! ! uses {$IFDEF WIN32} Windows, {$ELSE} WinTypes, WinProcs, {$ENDIF} SysUtils, ! Classes, Graphics, Controls, Forms, StdCtrls, ExtCtrls, ! Grids, ! {$IFDEF COMPILER6_UP} ! RTLConsts, DesignIntf, DesignEditors, DesignWindows, VCLEditors, ! {$ELSE} LibIntf, DsgnIntf, DsgnWnds, ! {$ENDIF} ! Menus, JvVCLUtils, JvPlacemnt, ! JvTimerLst; type --- 30,46 ---- interface ! uses ! {$IFDEF WIN32} ! Windows, ! {$ELSE} ! WinTypes, WinProcs, ! {$ENDIF} ! SysUtils, Classes, Graphics, Controls, Forms, StdCtrls, ExtCtrls, Grids, Menus, ! {$IFDEF COMPILER6_UP} ! RTLConsts, DesignIntf, DesignEditors, DesignWindows, VCLEditors, ! {$ELSE} LibIntf, DsgnIntf, DsgnWnds, ! {$ENDIF} ! JvVCLUtils, JvPlacemnt, JvTimerLst; type *************** *** 91,117 **** procedure Activated; override; public ! {$IFDEF COMPILER6_UP} function EditAction(Action: TEditAction): Boolean; override; procedure ItemsModified(const Designer: IDesigner); override; procedure DesignerClosed(const ADesigner: IDesigner; AGoingDormant: Boolean); override; ! {$ELSE} procedure EditAction(Action: TEditAction); override; procedure FormModified; override; ! {$IFDEF COMPILER3_UP} procedure FormClosed(Form: TCustomForm); override; ! {$ELSE} procedure FormClosed(Form: TForm); override; ! {$ENDIF} ! {$ENDIF} function GetEditState: TEditState; override; ! {$IFDEF COMPILER6_UP} procedure ItemDeleted(const ADesigner: IDesigner; Item: TPersistent); override; ! {$ELSE} ! {$IFDEF COMPILER4_UP} procedure ComponentDeleted(Component: IPersistent); override; ! {$ELSE} procedure ComponentDeleted(Component: TComponent); override; ! {$ENDIF} ! {$ENDIF} property TimersCollection: TJvTimerList read FTimersCollection write SetTimersCollection; --- 93,119 ---- procedure Activated; override; public ! {$IFDEF COMPILER6_UP} function EditAction(Action: TEditAction): Boolean; override; procedure ItemsModified(const Designer: IDesigner); override; procedure DesignerClosed(const ADesigner: IDesigner; AGoingDormant: Boolean); override; ! {$ELSE} procedure EditAction(Action: TEditAction); override; procedure FormModified; override; ! {$IFDEF COMPILER3_UP} procedure FormClosed(Form: TCustomForm); override; ! {$ELSE} procedure FormClosed(Form: TForm); override; ! {$ENDIF} ! {$ENDIF} function GetEditState: TEditState; override; ! {$IFDEF COMPILER6_UP} procedure ItemDeleted(const ADesigner: IDesigner; Item: TPersistent); override; ! {$ELSE} ! {$IFDEF COMPILER4_UP} procedure ComponentDeleted(Component: IPersistent); override; ! {$ELSE} procedure ComponentDeleted(Component: TComponent); override; ! {$ENDIF} ! {$ENDIF} property TimersCollection: TJvTimerList read FTimersCollection write SetTimersCollection; *************** *** 119,124 **** end; - { TJvTimersItemListProperty } - TJvTimersItemListProperty = class(TPropertyEditor) function GetAttributes: TPropertyAttributes; override; --- 121,124 ---- *************** *** 127,132 **** end; - { TJvTimersCollectionEditor } - TJvTimersCollectionEditor = class(TComponentEditor) procedure ExecuteVerb(Index: Integer); override; --- 127,130 ---- *************** *** 137,146 **** implementation ! uses Consts, {$IFDEF WIN32} JvConst, {$ENDIF} JvxConst, JvTypes; {$R *.DFM} {$IFDEF WIN32} ! {$D-} {$ENDIF} --- 135,149 ---- implementation ! uses ! Consts, ! {$IFDEF WIN32} ! JvConst, ! {$ENDIF} ! JvxConst, JvTypes; {$R *.DFM} {$IFDEF WIN32} ! {$D-} {$ENDIF} *************** *** 162,167 **** begin Result := nil; ! for I := 0 to Screen.FormCount - 1 do begin ! if Screen.Forms[I] is TJvTimerItemsEditor then begin if TJvTimerItemsEditor(Screen.Forms[I]).TimersCollection = ATimersCollection then begin --- 165,170 ---- begin Result := nil; ! for I := 0 to Screen.FormCount - 1 do ! if Screen.Forms[I] is TJvTimerItemsEditor then if TJvTimerItemsEditor(Screen.Forms[I]).TimersCollection = ATimersCollection then begin *************** *** 169,174 **** Break; end; - end; - end; end; --- 172,175 ---- *************** *** 178,184 **** Editor: TJvTimerItemsEditor; begin ! if ATimersCollection = nil then Exit; Editor := FindEditor(ATimersCollection); ! if Editor = nil then begin Editor := TJvTimerItemsEditor.Create(Application); try --- 179,187 ---- Editor: TJvTimerItemsEditor; begin ! if ATimersCollection = nil then ! Exit; Editor := FindEditor(ATimersCollection); ! if Editor = nil then ! begin Editor := TJvTimerItemsEditor.Create(Application); try *************** *** 191,195 **** end; end ! else begin Editor.Show; if Editor.WindowState = wsMinimized then --- 194,199 ---- end; end ! else ! begin Editor.Show; if Editor.WindowState = wsMinimized then *************** *** 198,203 **** end; - { TJvTimersItemListProperty } - function TJvTimersItemListProperty.GetAttributes: TPropertyAttributes; begin --- 202,205 ---- *************** *** 212,216 **** if (List = nil) or (List.Count = 0) then Result := ResStr(srNone) ! else FmtStr(Result, '(%s)', [GetPropType^.Name]); end; --- 214,219 ---- if (List = nil) or (List.Count = 0) then Result := ResStr(srNone) ! else ! FmtStr(Result, '(%s)', [GetPropType^.Name]); end; *************** *** 220,229 **** end; - { TJvTimersCollectionEditor } - procedure TJvTimersCollectionEditor.ExecuteVerb(Index: Integer); begin case Index of ! 0: ShowItemsEditor(Designer, TJvTimerList(Component)); end; end; --- 223,231 ---- end; procedure TJvTimersCollectionEditor.ExecuteVerb(Index: Integer); begin case Index of ! 0: ! ShowItemsEditor(Designer, TJvTimerList(Component)); end; end; *************** *** 232,236 **** begin case Index of ! 0: Result := srTimerDesigner; end; end; --- 234,239 ---- begin case Index of ! 0: ! Result := srTimerDesigner; end; end; *************** *** 241,249 **** end; - { TJvTimerItemsEditor } - procedure TJvTimerItemsEditor.SetTimersCollection(Value: TJvTimerList); begin ! if FTimersCollection <> Value then begin FTimersCollection := Value; UpdateData; --- 244,251 ---- end; procedure TJvTimerItemsEditor.SetTimersCollection(Value: TJvTimerList); begin ! if FTimersCollection <> Value then ! begin FTimersCollection := Value; UpdateData; *************** *** 254,269 **** var Temp: string; ! {$IFNDEF WIN32} I: Integer; Comp: TComponent; ! {$ENDIF} begin ! if (Component <> nil) then Temp := Component.ClassName ! else Temp := TJvTimerEvent.ClassName; if (UpCase(Temp[1]) = 'T') and (Length(Temp) > 1) then System.Delete(Temp, 1, 1); ! {$IFDEF WIN32} Result := Designer.UniqueName(Temp); ! {$ELSE} I := 1; repeat --- 256,273 ---- var Temp: string; ! {$IFNDEF WIN32} I: Integer; Comp: TComponent; ! {$ENDIF} begin ! if Component <> nil then ! Temp := Component.ClassName ! else ! Temp := TJvTimerEvent.ClassName; if (UpCase(Temp[1]) = 'T') and (Length(Temp) > 1) then System.Delete(Temp, 1, 1); ! {$IFDEF WIN32} Result := Designer.UniqueName(Temp); ! {$ELSE} I := 1; repeat *************** *** 272,276 **** Inc(I); until (Comp = nil) or (Comp = Component); ! {$ENDIF} end; --- 276,280 ---- Inc(I); until (Comp = nil) or (Comp = Component); ! {$ENDIF} end; *************** *** 278,283 **** begin Result := []; ! if DeleteBtn.Enabled then Result := [esCanDelete, esCanCut, esCanCopy]; ! if ClipboardComponents then Include(Result, esCanPaste); end; --- 282,289 ---- begin Result := []; ! if DeleteBtn.Enabled then ! Result := [esCanDelete, esCanCut, esCanCopy]; ! if ClipboardComponents then ! Include(Result, esCanPaste); end; *************** *** 292,296 **** {$ENDIF} begin ! if {$IFDEF COMPILER6_UP}ADesigner.Root{$ELSE}Form{$ENDIF} = OwnerForm then Free; end; --- 298,303 ---- {$ENDIF} begin ! if {$IFDEF COMPILER6_UP} ADesigner.Root {$ELSE} Form {$ENDIF} = OwnerForm then ! Free; end; *************** *** 301,305 **** {$ENDIF} begin ! if not (csDestroying in ComponentState) then UpdateData; end; --- 308,313 ---- {$ENDIF} begin ! if not (csDestroying in ComponentState) then ! UpdateData; end; *************** *** 313,326 **** Empty: Boolean; begin ! if CheckCollection then begin Caption := Format(srTimerEvents, [TimersCollection.Name]); Empty := TimersCollection.Count = 0; end ! else Empty := True; ! if Empty then begin DrawGrid.RowCount := 2; SelectItem(nil); end ! else DrawGrid.RowCount := TimersCollection.Count + 1; DeleteBtn.Enabled := not Empty; ClearBtn.Enabled := not Empty; --- 321,338 ---- Empty: Boolean; begin ! if CheckCollection then ! begin Caption := Format(srTimerEvents, [TimersCollection.Name]); Empty := TimersCollection.Count = 0; end ! else ! Empty := True; ! if Empty then ! begin DrawGrid.RowCount := 2; SelectItem(nil); end ! else ! DrawGrid.RowCount := TimersCollection.Count + 1; DeleteBtn.Enabled := not Empty; ClearBtn.Enabled := not Empty; *************** *** 334,338 **** function TJvTimerItemsEditor.GetForm: TCustomForm; begin ! Result := {$IFDEF COMPILER6_UP}TCustomForm(Designer.Root){$ELSE}Designer.Form{$ENDIF}; end; --- 346,350 ---- function TJvTimerItemsEditor.GetForm: TCustomForm; begin ! Result := {$IFDEF COMPILER6_UP} TCustomForm(Designer.Root) {$ELSE} Designer.Form {$ENDIF}; end; *************** *** 345,349 **** begin Result := (TimersCollection <> nil) and (TimersCollection.Owner <> nil) ! and ({$IFDEF COMPILER6_UP}Designer.Root{$ELSE}Designer.Form{$ENDIF} <> nil); end; --- 357,361 ---- begin Result := (TimersCollection <> nil) and (TimersCollection.Owner <> nil) ! and ({$IFDEF COMPILER6_UP} Designer.Root {$ELSE} Designer.Form {$ENDIF} <> nil); end; *************** *** 353,365 **** {$ENDIF} - procedure TJvTimerItemsEditor.SelectItem(Item: TJvTimerEvent); var FComponents: TDesignerSelectionList; begin ! if CheckCollection and Active then begin ! FComponents := {$IFDEF COMPILER6_UP}TDesignerSelections{$ELSE}TDesignerSelectionList{$ENDIF}.Create; ! if Item <> nil then FComponents.Add(Item) ! else FComponents.Add(TimersCollection); SetSelection(FComponents); end; --- 365,379 ---- {$ENDIF} procedure TJvTimerItemsEditor.SelectItem(Item: TJvTimerEvent); var FComponents: TDesignerSelectionList; begin ! if CheckCollection and Active then ! begin ! FComponents := {$IFDEF COMPILER6_UP} TDesignerSelections {$ELSE} TDesignerSelectionList {$ENDIF}.Create; ! if Item <> nil then ! FComponents.Add(Item) ! else ! FComponents.Add(TimersCollection); SetSelection(FComponents); end; *************** *** 379,392 **** procedure TJvTimerItemsEditor.ItemDeleted(const ADesigner: IDesigner; Item: TPersistent); begin ! if Item = TimersCollection then begin {$ELSE} {$IFDEF COMPILER4_UP} procedure TJvTimerItemsEditor.ComponentDeleted(Component: IPersistent); begin ! if ExtractPersistent(Component) = TimersCollection then begin {$ELSE} procedure TJvTimerItemsEditor.ComponentDeleted(Component: TComponent); begin ! if Component = TimersCollection then begin {$ENDIF} {$ENDIF} --- 393,409 ---- procedure TJvTimerItemsEditor.ItemDeleted(const ADesigner: IDesigner; Item: TPersistent); begin ! if Item = TimersCollection then ! begin {$ELSE} {$IFDEF COMPILER4_UP} procedure TJvTimerItemsEditor.ComponentDeleted(Component: IPersistent); begin ! if ExtractPersistent(Component) = TimersCollection then ! begin {$ELSE} procedure TJvTimerItemsEditor.ComponentDeleted(Component: TComponent); begin ! if Component = TimersCollection then ! begin {$ENDIF} {$ENDIF} *************** *** 396,400 **** end; - procedure TJvTimerItemsEditor.DrawGridDrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState); --- 413,416 ---- *************** *** 404,411 **** begin CellText := ''; ! if gdFixed in State then CellText := 'Item name' ! else begin Item := ItemByRow(Row - 1); ! if Item <> nil then CellText := Item.Name; end; DrawCellText(DrawGrid, Col, Row, CellText, Rect, taLeftJustify, vaCenter); --- 420,430 ---- begin CellText := ''; ! if gdFixed in State then ! CellText := 'Item name' ! else ! begin Item := ItemByRow(Row - 1); ! if Item <> nil then ! CellText := Item.Name; end; DrawCellText(DrawGrid, Col, Row, CellText, Rect, taLeftJustify, vaCenter); *************** *** 428,439 **** begin Item := ItemByRow(DrawGrid.Row - 1); ! if Item <> nil then begin ! {$IFDEF COMPILER6_UP}TCustomForm(Designer.Root).Designer{$ELSE}Designer{$ENDIF}.ValidateRename(Item, Item.Name, ''); TimersCollection.Delete(Item.Handle); ! if TimersCollection.Count > 0 then begin Item := ItemByRow(DrawGrid.Row - 1); SelectItem(Item); end ! else SelectItem(nil); UpdateData; Designer.Modified; --- 447,461 ---- begin Item := ItemByRow(DrawGrid.Row - 1); ! if Item <> nil then ! begin ! {$IFDEF COMPILER6_UP} TCustomForm(Designer.Root).Designer {$ELSE} Designer {$ENDIF}.ValidateRename(Item, Item.Name, ''); TimersCollection.Delete(Item.Handle); ! if TimersCollection.Count > 0 then ! begin Item := ItemByRow(DrawGrid.Row - 1); SelectItem(Item); end ! else ! SelectItem(nil); UpdateData; Designer.Modified; *************** *** 446,451 **** if Shift = [] then case Key of ! VK_RETURN: if ItemByRow(DrawGrid.Row - 1) <> nil then ActivateInspector(#0); ! VK_DELETE: DeleteClick(nil); end; end; --- 468,476 ---- if Shift = [] then case Key of ! VK_RETURN: ! if ItemByRow(DrawGrid.Row - 1) <> nil then ! ActivateInspector(#0); ! VK_DELETE: ! DeleteClick(nil); end; end; *************** *** 454,469 **** begin TimersCollection := nil; ! if NewStyleControls then Font.Style := []; ! {$IFDEF WIN32} ! with FormStorage do begin UseRegistry := True; IniFileName := SDelphiKey; end; ! {$ENDIF} end; procedure TJvTimerItemsEditor.FormResize(Sender: TObject); begin ! with DrawGrid do ColWidths[0] := ClientWidth; end; --- 479,497 ---- begin TimersCollection := nil; ! if NewStyleControls then ! Font.Style := []; ! {$IFDEF WIN32} ! with FormStorage do ! begin UseRegistry := True; IniFileName := SDelphiKey; end; ! {$ENDIF} end; procedure TJvTimerItemsEditor.FormResize(Sender: TObject); begin ! with DrawGrid do ! ColWidths[0] := ClientWidth; end; *************** *** 477,484 **** {$ENDIF} case Action of ! eaCut: Cut; ! eaCopy: Copy; ! eaPaste: Paste; ! eaDelete: DeleteClick(Self); end; end; --- 505,516 ---- {$ENDIF} case Action of ! eaCut: ! Cut; ! eaCopy: ! Copy; ! eaPaste: ! Paste; ! eaDelete: ! DeleteClick(Self); end; end; *************** *** 491,507 **** Item := TJvTimerEvent.Create(TimersCollection.Owner); if Item <> nil then ! try ! Item.Name := UniqueName(Item); ! with TimersCollection do ! I := ItemIndexByHandle(AddItem(Item)); ! SelectItem(Item); ! Designer.Modified; ! ActivateInspector(#0); ! DrawGrid.Row := I + 1; ! except ! Item.Free; ! raise; ! end ! else raise EJVCLException.Create(srEventNotCreate); end; --- 523,540 ---- Item := TJvTimerEvent.Create(TimersCollection.Owner); if Item <> nil then ! try ! Item.Name := UniqueName(Item); ! with TimersCollection do ! I := ItemIndexByHandle(AddItem(Item)); ! SelectItem(Item); ! Designer.Modified; ! ActivateInspector(#0); ! DrawGrid.Row := I + 1; ! except ! Item.Free; ! raise; ! end ! else ! raise EJVCLException.Create(srEventNotCreate); end; *************** *** 535,581 **** Item: TJvTimerEvent; begin ! CompList := {$IFDEF COMPILER6_UP}TDesignerSelections{$ELSE}TDesignerSelectionList{$ENDIF}.Create; ! {$IFNDEF COMPILER6_UP} try ! {$ENDIF} Item := ItemByRow(DrawGrid.Row - 1); ! if Item <> nil then begin CompList.Add(Item); CopyComponents(OwnerForm, CompList); end; ! {$IFNDEF COMPILER6_UP} finally CompList.Free; end; ! {$ENDIF} end; - procedure TJvTimerItemsEditor.Paste; var CompList: TDesignerSelectionList; begin ! if CheckCollection then begin ! CompList := {$IFDEF COMPILER6_UP}TDesignerSelections{$ELSE}TDesignerSelectionList{$ENDIF}.Create; ! {$IFNDEF COMPILER6_UP} try ! {$ENDIF} PasteComponents(OwnerForm, TimersCollection, CompList); UpdateData; ! {$IFNDEF COMPILER6_UP} finally CompList.Free; end; ! {$ENDIF} end; end; procedure TJvTimerItemsEditor.ClearBtnClick(Sender: TObject); var Item: TJvTimerEvent; begin ! while TimersCollection.Events.Count > 0 do begin Item := TJvTimerEvent(TimersCollection.Events[0]); if Item <> nil then ! {$IFDEF COMPILER6_UP}TCustomForm(Designer.Root).Designer{$ELSE}Designer{$ENDIF}.ValidateRename(Item, Item.Name, ''); TimersCollection.Events.Delete(0); Item.Free; --- 568,618 ---- Item: TJvTimerEvent; begin ! CompList := {$IFDEF COMPILER6_UP} TDesignerSelections {$ELSE} TDesignerSelectionList {$ENDIF}.Create; ! {$IFNDEF COMPILER6_UP} try ! {$ENDIF} Item := ItemByRow(DrawGrid.Row - 1); ! if Item <> nil then ! begin CompList.Add(Item); CopyComponents(OwnerForm, CompList); end; ! {$IFNDEF COMPILER6_UP} finally CompList.Free; end; ! {$ENDIF} end; procedure TJvTimerItemsEditor.Paste; var CompList: TDesignerSelectionList; begin ! if CheckCollection then ! begin ! CompList := {$IFDEF COMPILER6_UP} TDesignerSelections {$ELSE} TDesignerSelectionList {$ENDIF}.Create; ! {$IFNDEF COMPILER6_UP} try ! {$ENDIF} PasteComponents(OwnerForm, TimersCollection, CompList); UpdateData; ! {$IFNDEF COMPILER6_UP} finally CompList.Free; end; ! {$ENDIF} end; end; + procedure TJvTimerItemsEditor.ClearBtnClick(Sender: TObject); var Item: TJvTimerEvent; begin ! while TimersCollection.Events.Count > 0 do ! begin Item := TJvTimerEvent(TimersCollection.Events[0]); if Item <> nil then ! {$IFDEF COMPILER6_UP} TCustomForm(Designer.Root).Designer {$ELSE} Designer {$ENDIF}.ValidateRename(Item, ! Item.Name, ''); TimersCollection.Events.Delete(0); Item.Free; *************** *** 585,586 **** --- 622,624 ---- end. + Index: JvTimeLine.pas =================================================================== RCS file: /cvsroot/jvcl/rm/source/JvTimeLine.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** JvTimeLine.pas 12 Feb 2003 17:18:06 -0000 1.3 --- JvTimeLine.pas 13 Feb 2003 13:53:21 -0000 1.4 *************** *** 2759,2763 **** end; ! initialization // SystemParametersInfo(SPI_GETKEYBOARDDELAY,0,@FInitRepeatPause,0); // SystemParametersInfo(SPI_GETKEYBOARDSPEED,0,@FRepeatPause,0); --- 2759,2763 ---- end; ! //initialization // SystemParametersInfo(SPI_GETKEYBOARDDELAY,0,@FInitRepeatPause,0); // SystemParametersInfo(SPI_GETKEYBOARDSPEED,0,@FRepeatPause,0); Index: JvTimerLst.pas =================================================================== RCS file: /cvsroot/jvcl/rm/source/JvTimerLst.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** JvTimerLst.pas 10 Feb 2003 11:27:55 -0000 1.2 --- JvTimerLst.pas 13 Feb 2003 13:53:21 -0000 1.3 *************** *** 13,17 **** The Initial Developers of the Original Code are: Fedor Koshevnikov, Igor Pavluk and Serge Korolev Copyright (c) 1997, 1998 Fedor Koshevnikov, Igor Pavluk and Serge Korolev ! Copyright (c) 2001,2002 SGB Software All Rights Reserved. --- 13,17 ---- The Initial Developers of the Original Code are: Fedor Koshevnikov, Igor Pavluk and Serge Korolev Copyright (c) 1997, 1998 Fedor Koshevnikov, Igor Pavluk and Serge Korolev ! Copyright (c) 2001,2002 SGB Software All Rights Reserved. *************** *** 30,39 **** interface ! uses {$IFDEF WIN32} Windows, {$ELSE} WinTypes, WinProcs, {$ENDIF} ! Messages, Classes{, JvComponent}; const DefaultInterval = 1000; - HInvalidEvent = -1; type --- 30,43 ---- interface ! uses ! {$IFDEF WIN32} ! Windows, ! {$ELSE} ! WinTypes, WinProcs, ! {$ENDIF} ! Messages, Classes {, JvComponent}; const DefaultInterval = 1000; type *************** *** 45,49 **** private FEvents: TList; ! FWndHandle: hWnd; FActive: Boolean; FInterval: Longint; --- 49,53 ---- private FEvents: TList; ! FWndHandle: HWND; FActive: Boolean; FInterval: Longint; *************** *** 64,87 **** procedure UpdateTimer; protected ! {$IFDEF WIN32} procedure GetChildren(Proc: TGetChildProc {$IFDEF COMPILER3_UP}; Root: TComponent {$ENDIF}); override; ! {$ELSE} procedure WriteComponents(Writer: TWriter); override; ! {$ENDIF WIN32} procedure DoTimer(Event: TJvTimerEvent); dynamic; ! function NextHandle: Longint; virtual; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; function Add(AOnTimer: TNotifyEvent; AInterval: Longint; ! ACycled: Boolean): Longint; virtual; ! function AddItem(Item: TJvTimerEvent): Longint; procedure Clear; ! procedure Delete(AHandle: Longint); virtual; procedure Activate; procedure Deactivate; ! function ItemByHandle(AHandle: Longint): TJvTimerEvent; ! function ItemIndexByHandle(AHandle: Longint): Integer; property Count: Integer read GetCount; property EnabledCount: Integer read GetEnabledCount; --- 68,91 ---- procedure UpdateTimer; protected ! {$IFDEF WIN32} procedure GetChildren(Proc: TGetChildProc {$IFDEF COMPILER3_UP}; Root: TComponent {$ENDIF}); override; ! {$ELSE} procedure WriteComponents(Writer: TWriter); override; ! {$ENDIF WIN32} procedure DoTimer(Event: TJvTimerEvent); dynamic; ! function NextHandle: THandle; virtual; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; function Add(AOnTimer: TNotifyEvent; AInterval: Longint; ! ACycled: Boolean): THandle; virtual; ! function AddItem(Item: TJvTimerEvent): THandle; procedure Clear; ! procedure Delete(AHandle: THandle); virtual; procedure Activate; procedure Deactivate; ! function ItemByHandle(AHandle: THandle): TJvTimerEvent; ! function ItemIndexByHandle(AHandle: THandle): Integer; property Count: Integer read GetCount; property EnabledCount: Integer read GetEnabledCount; *************** *** 93,96 **** --- 97,102 ---- end; + // (rom) used THandle where needed + TJvTimerEvent = class(TComponent) private *************** *** 98,102 **** FEnabled: Boolean; FExecCount: Integer; ! FHandle: Longint; FInterval: Longint; FLastExecute: Longint; --- 104,108 ---- FEnabled: Boolean; FExecCount: Integer; ! FHandle: THandle; FInterval: Longint; FLastExecute: Longint; *************** *** 109,130 **** procedure SetEnabled(Value: Boolean); procedure SetInterval(Value: Longint); ! {$IFNDEF WIN32} procedure SetParentList(Value: TJvTimerList); ! {$ENDIF WIN32} protected ! {$IFDEF WIN32} procedure SetParentComponent(Value: TComponent); override; ! {$ELSE} procedure ReadState(Reader: TReader); override; ! {$ENDIF} public constructor Create(AOwner: TComponent); override; destructor Destroy; override; function HasParent: Boolean; override; ! {$IFDEF WIN32} function GetParentComponent: TComponent; override; ! {$ENDIF} property AsSeconds: Cardinal read GetAsSeconds write SetAsSeconds; ! property Handle: Longint read FHandle; property ExecCount: Integer read FExecCount; property TimerList: TJvTimerList read FParentList; --- 115,136 ---- procedure SetEnabled(Value: Boolean); procedure SetInterval(Value: Longint); ! {$IFNDEF WIN32} procedure SetParentList(Value: TJvTimerList); ! {$ENDIF WIN32} protected ! {$IFDEF WIN32} procedure SetParentComponent(Value: TComponent); override; ! {$ELSE} procedure ReadState(Reader: TReader); override; ! {$ENDIF} public constructor Create(AOwner: TComponent); override; destructor Destroy; override; function HasParent: Boolean; override; ! {$IFDEF WIN32} function GetParentComponent: TComponent; override; ! {$ENDIF} property AsSeconds: Cardinal read GetAsSeconds write SetAsSeconds; ! property Handle: THandle read FHandle; property ExecCount: Integer read FExecCount; property TimerList: TJvTimerList read FParentList; *************** *** 139,154 **** implementation ! uses Consts, Controls, Forms, SysUtils, JvVCLUtils, JvMaxMin; const MinInterval = 100; { 0.1 sec } ! {$IFDEF COMPILER4_UP} MaxTimerInterval: Longint = High(Longint); ! {$ELSE} MaxTimerInterval: Longint = High(Cardinal); ! {$ENDIF} ! {$IFNDEF WIN32} INVALID_HANDLE_VALUE = 0; ! {$ENDIF} // (rom) changed to var --- 145,163 ---- implementation ! uses ! Consts, Controls, Forms, SysUtils, ! JvVCLUtils, JvMaxMin; const MinInterval = 100; { 0.1 sec } ! {$IFDEF COMPILER4_UP} MaxTimerInterval: Longint = High(Longint); ! {$ELSE} MaxTimerInterval: Longint = High(Cardinal); ! {$ENDIF} ! {$IFNDEF WIN32} ! // (rom) is this correct? INVALID_HANDLE_VALUE = 0; ! {$ENDIF} // (rom) changed to var *************** *** 156,161 **** Registered: Boolean = False; - { TJvTimerEvent } - constructor TJvTimerEvent.Create(AOwner: TComponent); begin --- 165,168 ---- *************** *** 168,172 **** FInterval := DefaultInterval; FLastExecute := GetTickCount; ! FHandle := HInvalidEvent; end; --- 175,179 ---- FInterval := DefaultInterval; FLastExecute := GetTickCount; ! FHandle := INVALID_HANDLE_VALUE; end; *************** *** 180,185 **** procedure TJvTimerEvent.SetParentList(Value: TJvTimerList); begin ! if FParentList <> nil then FParentList.RemoveItem(Self); ! if Value <> nil then Value.AddItem(Self); end; {$ENDIF} --- 187,194 ---- procedure TJvTimerEvent.SetParentList(Value: TJvTimerList); begin ! if FParentList <> nil then ! FParentList.RemoveItem(Self); ! if Value <> nil then ! Value.AddItem(Self); end; {$ENDIF} *************** *** 199,203 **** procedure TJvTimerEvent.SetParentComponent(Value: TComponent); begin ! if FParentList <> nil then FParentList.RemoveItem(Self); if (Value <> nil) and (Value is TJvTimerList) then TJvTimerList(Value).AddItem(Self); --- 208,213 ---- procedure TJvTimerEvent.SetParentComponent(Value: TComponent); begin ! if FParentList <> nil then ! FParentList.RemoveItem(Self); if (Value <> nil) and (Value is TJvTimerList) then TJvTimerList(Value).AddItem(Self); *************** *** 217,227 **** procedure TJvTimerEvent.SetEnabled(Value: Boolean); begin ! if Value <> FEnabled then begin FEnabled := Value; ! if FEnabled then begin FExecCount := 0; FLastExecute := GetTickCount; if FParentList <> nil then ! with FParentList do begin CalculateInterval(GetTickCount); UpdateTimer; --- 227,240 ---- procedure TJvTimerEvent.SetEnabled(Value: Boolean); begin ! if Value <> FEnabled then ! begin FEnabled := Value; ! if FEnabled then ! begin FExecCount := 0; FLastExecute := GetTickCount; if FParentList <> nil then ! with FParentList do ! begin CalculateInterval(GetTickCount); UpdateTimer; *************** *** 233,240 **** procedure TJvTimerEvent.SetInterval(Value: Longint); begin ! if Value <> FInterval then begin FInterval := Value; if FParentList <> nil then ! with FParentList do begin CalculateInterval(GetTickCount); UpdateTimer; --- 246,255 ---- procedure TJvTimerEvent.SetInterval(Value: Longint); begin ! if Value <> FInterval then ! begin FInterval := Value; if FParentList <> nil then ! with FParentList do ! begin CalculateInterval(GetTickCount); UpdateTimer; *************** *** 245,252 **** procedure TJvTimerEvent.SetRepeatCount(Value: Integer); begin ! if FRepeatCount <> Value then begin Value := Max(Value, Integer(not FCycled)); if not (csDesigning in ComponentState) then ! if FEnabled and (Value <= FExecCount) then Enabled := False; FRepeatCount := Value; end; --- 260,269 ---- procedure TJvTimerEvent.SetRepeatCount(Value: Integer); begin ! if FRepeatCount <> Value then ! begin Value := Max(Value, Integer(not FCycled)); if not (csDesigning in ComponentState) then ! if FEnabled and (Value <= FExecCount) then ! Enabled := False; FRepeatCount := Value; end; *************** *** 263,268 **** end; - { TJvTimerList } - constructor TJvTimerList.Create(AOwner: TComponent); begin --- 280,283 ---- *************** *** 273,277 **** FStartInterval := 0; Deactivate; ! if not Registered then begin RegisterClasses([TJvTimerEvent]); Registered := True; --- 288,293 ---- FStartInterval := 0; Deactivate; ! if not Registered then ! begin RegisterClasses([TJvTimerEvent]); Registered := True; *************** *** 296,300 **** procedure TJvTimerList.Deactivate; begin ! if not (csLoading in ComponentState) then Active := False; end; --- 312,317 ---- procedure TJvTimerList.Deactivate; begin ! if not (csLoading in ComponentState) then ! Active := False; end; *************** *** 312,319 **** StartTicks: Longint; begin ! if FActive <> Value then begin ! if not (csDesigning in ComponentState) then begin ! if Value then begin ! FWndHandle := {$IFDEF COMPILER6_UP}Classes.{$ENDIF}AllocateHWnd(TimerWndProc); StartTicks := GetTickCount; SetEvents(StartTicks); --- 329,343 ---- StartTicks: Longint; begin ! if FActive <> Value then ! begin ! if not (csDesigning in ComponentState) then ! begin ! if Value then ! begin ! {$IFDEF COMPILER6_UP} ! FWndHandle := Classes.AllocateHWnd(TimerWndProc); ! {$ELSE} ! FWndHandle := AllocateHWnd(TimerWndProc); ! {$ENDIF} StartTicks := GetTickCount; SetEvents(StartTicks); *************** *** 322,330 **** UpdateTimer; end ! else begin KillTimer(FWndHandle, 1); ! {$IFDEF COMPILER6_UP}Classes.{$ENDIF}DeallocateHWnd(FWndHandle); FWndHandle := INVALID_HANDLE_VALUE; ! if Assigned(FOnFinish) then FOnFinish(Self); end; FStartInterval := 0; --- 346,360 ---- UpdateTimer; end ! else ! begin KillTimer(FWndHandle, 1); ! {$IFDEF COMPILER6_UP} ! Classes.DeallocateHWnd(FWndHandle); ! {$ELSE} ! DeallocateHWnd(FWndHandle); ! {$ENDIF} FWndHandle := INVALID_HANDLE_VALUE; ! if Assigned(FOnFinish) then ! FOnFinish(Self); end; FStartInterval := 0; *************** *** 351,357 **** begin inherited WriteComponents(Writer); ! for I := 0 to FEvents.Count - 1 do begin Item := TJvTimerEvent(FEvents[I]); ! if Item.Owner = Writer.Root then Writer.WriteComponent(Item); end; end; --- 381,389 ---- begin inherited WriteComponents(Writer); ! for I := 0 to FEvents.Count - 1 do ! begin Item := TJvTimerEvent(FEvents[I]); ! if Item.Owner = Writer.Root then ! Writer.WriteComponent(Item); end; end; *************** *** 366,370 **** repeat ExitLoop := True; ! for I := 0 to Count - 2 do begin if TJvTimerEvent(FEvents[I]).Interval > TJvTimerEvent(FEvents[I + 1]).Interval then begin --- 398,403 ---- repeat ExitLoop := True; ! for I := 0 to Count - 2 do ! begin if TJvTimerEvent(FEvents[I]).Interval > TJvTimerEvent(FEvents[I + 1]).Interval then begin *************** *** 376,380 **** end; ! function TJvTimerList.NextHandle: Longint; begin Inc(FSequence); --- 409,413 ---- end; ! function TJvTimerList.NextHandle: THandle; begin Inc(FSequence); *************** *** 387,393 **** end; ! function TJvTimerList.AddItem(Item: TJvTimerEvent): Longint; begin ! if FEvents.Add(Item) >= 0 then begin Item.FHandle := NextHandle; Item.FParentList := Self; --- 420,427 ---- end; ! function TJvTimerList.AddItem(Item: TJvTimerEvent): THandle; begin ! if FEvents.Add(Item) >= 0 then ! begin Item.FHandle := NextHandle; Item.FParentList := Self; *************** *** 397,412 **** UpdateTimer; end ! else Result := HInvalidEvent; { invalid handle } end; { Create a new timer event and returns a handle } function TJvTimerList.Add(AOnTimer: TNotifyEvent; AInterval: Longint; ! ACycled: Boolean): Longint; var T: TJvTimerEvent; begin T := CreateNewEvent; ! if (FEvents.Add(T) >= 0) then begin ! with T do begin OnTimer := AOnTimer; FParentList := Self; --- 431,450 ---- UpdateTimer; end ! else ! Result := INVALID_HANDLE_VALUE; end; { Create a new timer event and returns a handle } + function TJvTimerList.Add(AOnTimer: TNotifyEvent; AInterval: Longint; ! ACycled: Boolean): THandle; var T: TJvTimerEvent; begin T := CreateNewEvent; ! if FEvents.Add(T) >= 0 then ! begin ! with T do ! begin OnTimer := AOnTimer; FParentList := Self; *************** *** 420,446 **** UpdateTimer; end ! else begin T.Free; ! Result := HInvalidEvent; { invalid handle } end; end; ! function TJvTimerList.ItemIndexByHandle(AHandle: Longint): Integer; begin for Result := 0 to FEvents.Count - 1 do ! if TJvTimerEvent(FEvents[Result]).Handle = AHandle then Exit; Result := -1; end; ! function TJvTimerList.ItemByHandle(AHandle: Longint): TJvTimerEvent; var I: Integer; begin I := ItemIndexByHandle(AHandle); ! if I >= 0 then Result := TJvTimerEvent(FEvents[I]) ! else Result := nil; end; ! procedure TJvTimerList.Delete(AHandle: Longint); var I: Integer; --- 458,488 ---- UpdateTimer; end ! else ! begin T.Free; ! Result := INVALID_HANDLE_VALUE; end; end; ! function TJvTimerList.ItemIndexByHandle(AHandle: THandle): Integer; begin for Result := 0 to FEvents.Count - 1 do ! if TJvTimerEvent(FEvents[Result]).Handle = AHandle then ! Exit; Result := -1; end; ! function TJvTimerList.ItemByHandle(AHandle: THandle): TJvTimerEvent; var I: Integer; begin I := ItemIndexByHandle(AHandle); ! if I >= 0 then ! Result := TJvTimerEvent(FEvents[I]) ! else ! Result := nil; end; ! procedure TJvTimerList.Delete(AHandle: THandle); var I: Integer; *************** *** 448,456 **** begin I := ItemIndexByHandle(AHandle); ! if I >= 0 then begin Item := TJvTimerEvent(FEvents[I]); RemoveItem(Item); ! if not (csDestroying in Item.ComponentState) then Item.Free; ! if Active then begin CalculateInterval(GetTickCount); UpdateTimer; --- 490,501 ---- begin I := ItemIndexByHandle(AHandle); ! if I >= 0 then ! begin Item := TJvTimerEvent(FEvents[I]); RemoveItem(Item); ! if not (csDestroying in Item.ComponentState) then ! Item.Free; ! if Active then ! begin CalculateInterval(GetTickCount); UpdateTimer; *************** *** 470,474 **** Result := 0; for I := 0 to Count - 1 do ! if TJvTimerEvent(FEvents[I]).Enabled then Inc(Result); end; --- 515,520 ---- Result := 0; for I := 0 to Count - 1 do ! if TJvTimerEvent(FEvents[I]).Enabled then ! Inc(Result); end; *************** *** 484,491 **** Item: TJvTimerEvent; begin ! for I := FEvents.Count - 1 downto 0 do begin Item := TJvTimerEvent(FEvents[I]); RemoveItem(Item); ! if not (csDestroying in Item.ComponentState) then Item.Free; end; end; --- 530,539 ---- Item: TJvTimerEvent; begin ! for I := FEvents.Count - 1 downto 0 do ! begin Item := TJvTimerEvent(FEvents[I]); RemoveItem(Item); ! if not (csDestroying in Item.ComponentState) then ! Item.Free; end; end; *************** *** 493,499 **** procedure TJvTimerList.DoTimer(Event: TJvTimerEvent); begin ! with Event do ! if Assigned(FOnTimer) then FOnTimer(Event); ! if Assigned(FOnTimers) then FOnTimers(Self, Event.Handle); end; --- 541,549 ---- procedure TJvTimerList.DoTimer(Event: TJvTimerEvent); begin ! with Event do ! if Assigned(FOnTimer) then ! FOnTimer(Event); ! if Assigned(FOnTimers) then ! FOnTimers(Self, Event.Handle); end; *************** *** 505,511 **** begin Result := False; ! if not (csDesigning in ComponentState) then begin StartTicks := GetTickCount; ! for I := Count - 1 downto 0 do begin Item := TJvTimerEvent(FEvents[I]); if (Item <> nil) and Item.Enabled then --- 555,563 ---- begin Result := False; ! if not (csDesigning in ComponentState) then ! begin StartTicks := GetTickCount; ! for I := Count - 1 downto 0 do ! begin Item := TJvTimerEvent(FEvents[I]); if (Item <> nil) and Item.Enabled then *************** *** 516,520 **** Inc(FExecCount); Enabled := not ((not Cycled) and (FExecCount >= RepeatCount)); ! if not Enabled then Result := True; DoTimer(Item); end; --- 568,573 ---- Inc(FExecCount); Enabled := not ((not Cycled) and (FExecCount >= RepeatCount)); ! if not Enabled then ! Result := True; DoTimer(Item); end; *************** *** 525,548 **** procedure TJvTimerList.TimerWndProc(var Msg: TMessage); begin ! if not (csDesigning in ComponentState) then begin with Msg do if Msg = WM_TIMER then ! try ! if (not (csDesigning in ComponentState)) and ! (FStartInterval = 0) and Active then begin ! if ProcessEvents then begin ! if EnabledCount = 0 then Deactivate ! else begin ! CalculateInterval(GetTickCount); ! UpdateTimer; ! end; end; ! end else ! UpdateTimer; ! except ! Application.HandleException(Self); end ! else Result := DefWindowProc(FWndHandle, Msg, wParam, lParam); end; end; --- 578,607 ---- procedure TJvTimerList.TimerWndProc(var Msg: TMessage); begin ! if not (csDesigning in ComponentState) then ! begin with Msg do if Msg = WM_TIMER then ! try ! if (not (csDesigning in ComponentState)) and ! (FStartInterval = 0) and Active then ! begin ! if ProcessEvents then begin ! if EnabledCount = 0 then ! Deactivate ! else ! begin ! CalculateInterval(GetTickCount); ! UpdateTimer; end; ! end; end ! else ! UpdateTimer; ! except ! Application.HandleException(Self); ! end ! else ! Result := DefWindowProc(FWndHandle, Msg, WParam, LParam); end; end; *************** *** 553,576 **** ExitLoop: Boolean; begin ! if not (csDesigning in ComponentState) then begin ! if Count = 0 then FInterval := 0 ! else begin FStartInterval := 0; FInterval := MaxLongInt; for I := 0 to Count - 1 do with TJvTimerEvent(FEvents[I]) do ! if Enabled and (Interval > 0) then begin ! if Interval < Self.FInterval then Self.FInterval := Interval; if Self.FInterval > (Interval - (StartTicks - FLastExecute)) then Self.FInterval := (Interval - (StartTicks - FLastExecute)); end; ! if FInterval < MinInterval then FInterval := MinInterval; ! if FInterval = MaxLongint then FInterval := 0 ! else begin repeat ExitLoop := True; for I := 0 to Count - 1 do with TJvTimerEvent(FEvents[I]) do ! if (Interval mod Self.FInterval) <> 0 then begin Dec(Self.FInterval, Interval mod Self.FInterval); ExitLoop := False; --- 612,644 ---- ExitLoop: Boolean; begin ! if not (csDesigning in ComponentState) then ! begin ! if Count = 0 then ! FInterval := 0 ! else ! begin FStartInterval := 0; FInterval := MaxLongInt; for I := 0 to Count - 1 do with TJvTimerEvent(FEvents[I]) do ! if Enabled and (Interval > 0) then ! begin ! if Interval < Self.FInterval then ! Self.FInterval := Interval; if Self.FInterval > (Interval - (StartTicks - FLastExecute)) then Self.FInterval := (Interval - (StartTicks - FLastExecute)); end; ! if FInterval < MinInterval then ! FInterval := MinInterval; ! if FInterval = MaxLongint then ! FInterval := 0 ! else ! begin repeat ExitLoop := True; for I := 0 to Count - 1 do with TJvTimerEvent(FEvents[I]) do ! if (Interval mod Self.FInterval) <> 0 then ! begin Dec(Self.FInterval, Interval mod Self.FInterval); ExitLoop := False; *************** *** 578,582 **** end; until ExitLoop or (FInterval <= MinInterval); ! if FInterval < MinInterval then FInterval := MinInterval; end; end; --- 646,651 ---- end; until ExitLoop or (FInterval <= MinInterval); ! if FInterval < MinInterval then ! FInterval := MinInterval; end; end; *************** *** 588,608 **** FTimerInterval: Cardinal; begin ! if not (csDesigning in ComponentState) then begin ! if FInterval <= MaxTimerInterval then FTimerInterval := FInterval else ! if (FInterval - FStartInterval) <= MaxTimerInterval then begin ! FTimerInterval := Cardinal(FInterval - FStartInterval); ! FStartInterval := 0; ! end ! else begin ! FTimerInterval := MaxTimerInterval; ! FStartInterval := FStartInterval + MaxTimerInterval; ! end; if not (csDesigning in ComponentState) and (FWndHandle <> INVALID_HANDLE_VALUE) then begin KillTimer(FWndHandle, 1); ! if EnabledCount = 0 then Deactivate ! else if FInterval > 0 then ! if SetTimer(FWndHandle, 1, FTimerInterval, nil) = 0 then begin Deactivate; raise EOutOfResources.Create(ResStr(SNoTimers)); --- 657,684 ---- FTimerInterval: Cardinal; begin ! if not (csDesigning in ComponentState) then ! begin ! if FInterval <= MaxTimerInterval then ! FTimerInterval := FInterval else ! if (FInterval - FStartInterval) <= MaxTimerInterval then ! begin ! FTimerInterval := Cardinal(FInterval - FStartInterval); ! FStartInterval := 0; ! end ! else ! begin ! FTimerInterval := MaxTimerInterval; ! FStartInterval := FStartInterval + MaxTimerInterval; ! end; if not (csDesigning in ComponentState) and (FWndHandle <> INVALID_HANDLE_VALUE) then begin KillTimer(FWndHandle, 1); ! if EnabledCount = 0 then ! Deactivate ! else ! if FInterval > 0 then ! if SetTimer(FWndHandle, 1, FTimerInterval, nil) = 0 then ! begin Deactivate; raise EOutOfResources.Create(ResStr(SNoTimers)); *************** *** 613,614 **** --- 689,691 ---- end. + Index: JvTipOfDay.pas =================================================================== RCS file: /cvsroot/jvcl/rm/source/JvTipOfDay.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** JvTipOfDay.pas 9 Jan 2003 13:36:09 -0000 1.1 --- JvTipOfDay.pas 13 Feb 2003 13:53:21 -0000 1.2 *************** *** 62,66 **** FOnAfterExecute: TNotifyEvent; FOnCanShow: TJvCanShowEvent; - { For reentrance check: } FRunning: Boolean; --- 62,65 ---- *************** *** 68,72 **** FIsAutoExecute = True -> Execute is called in method Loaded } FIsAutoExecute: Boolean; - { Maybe a bit overkill, but use a generic base class to access the visual components, thus enabling you to easily extend the --- 67,70 ---- *************** *** 75,83 **** FNextTipButton: TControl; FCheckBox: TButtonControl; - { Parent form: } FForm: TCustomForm; FDummyMsgSend: Boolean; - procedure FontChanged(Sender: TObject); function GetRegKey: string; --- 73,79 ---- *************** *** 98,111 **** event handler to override the default behaviour: } function CanShow: Boolean; virtual; - { Initializes the "Standard Component Gallery" Tip of the Day dialog: } procedure InitStandard(AForm: TForm); { Initializes the "New VC++ look" Tip of the Day dialog: } procedure InitVC(AForm: TForm); - { Called in Loaded method; sets flag FIsAutoExecute to True to indicate that the Execute was automatically called, thus not by the user: } procedure AutoExecute; - { Functions to read/write from a default location a value that determines whether the dialog must be shown; if the user wants --- 94,104 ---- *************** *** 114,128 **** function ReadRegistry: Boolean; virtual; procedure WriteRegistry(DoShowOnStartUp: Boolean); virtual; - { Sets the fonts (HeaderFont and TipFont) to the default fonts associated with Style: } procedure UpdateFonts; - { Places a new tip on the dialog: } procedure UpdateTip; - { Handles button clicks on the 'Next' button: } procedure HandleNextClick(Sender: TObject); - { Hooks/Unhooks the parent form, this is done if toShowWhenFormShown is in Options } --- 107,117 ---- *************** *** 130,163 **** procedure UnHookForm; { The hook; responds when the parent form activates } ! function HookProc(var Message: TMessage): Boolean; ! procedure Loaded; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; - procedure Execute; override; - procedure LoadFromFile(const AFileName: string); procedure SaveToFile(const AFileName: string); - property IsAutoExecute: Boolean read FIsAutoExecute; published ! property ButtonNext: TJvButtonPersistent read FButtonNext write ! SetButtonNext; ! property ButtonClose: TJvButtonPersistent read FButtonClose write ! SetButtonClose; property CheckBoxText: string read FCheckBoxText write FCheckBoxText; property Color: TColor read FColor write FColor default clWhite; ! property DefaultFonts: Boolean read FDefaultFonts write SetDefaultFonts ! default True; ! property HeaderFont: TFont read FHeaderFont write SetHeaderFont stored ! IsFontStored; property HeaderText: string read FHeaderText write FHeaderText; ! property OnAfterExecute: TNotifyEvent read FOnAfterExecute write ! FOnAfterExecute; property OnCanShow: TJvCanShowEvent read FOnCanShow write FOnCanShow; ! property Options: TJvTipOfDayOptions read FOptions write FOptions default ! [toShowOnStartUp]; property Style: TJvTipOfDayStyle read FStyle write SetStyle default tsVC; property TipFont: TFont read FTipFont write SetTipFont stored IsFontStored; --- 119,142 ---- procedure UnHookForm; { The hook; responds when the parent form activates } ! function HookProc(var Msg: TMessage): Boolean; procedure Loaded; override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Execute; override; procedure LoadFromFile(const AFileName: string); procedure SaveToFile(const AFileName: string); property IsAutoExecute: Boolean read FIsAutoExecute; published ! property ButtonNext: TJvButtonPersistent read FButtonNext write SetButtonNext; ! property ButtonClose: TJvButtonPersistent read FButtonClose write SetButtonClose; property CheckBoxText: string read FCheckBoxText write FCheckBoxText; property Color: TColor read FColor write FColor default clWhite; ! property DefaultFonts: Boolean read FDefaultFonts write SetDefaultFonts default True; ! property HeaderFont: TFont read FHeaderFont write SetHeaderFont stored IsFontStored; property HeaderText: string read FHeaderText write FHeaderText; ! property OnAfterExecute: TNotifyEvent read FOnAfterExecute write FOnAfterExecute; property OnCanShow: TJvCanShowEvent read FOnCanShow write FOnCanShow; ! property Options: TJvTipOfDayOptions read FOptions write FOptions default [toShowOnStartUp]; property Style: TJvTipOfDayStyle read FStyle write SetStyle default tsVC; property TipFont: TFont read FTipFont write SetTipFont stored IsFontStored; *************** *** 175,178 **** --- 154,158 ---- resourcestring + // (rom) Jedi registry keys need rework RC_KeyStartup = 'Software\JEDI-VCL\TipsStartup'; RC_CloseCaption = '&Close'; *************** *** 180,184 **** RC_TipsTitle = 'Tips and Tricks'; RC_TipsHeaderText = 'Did you know...'; ! RC_TipsCheckBoxText = '&Show Tips on StartUp'; type --- 160,164 ---- RC_TipsTitle = 'Tips and Tricks'; RC_TipsHeaderText = 'Did you know...'; ! RC_TipsCheckBoxText = '&Show Tips on Startup'; type *************** *** 186,215 **** TButtonControlAccess = class(TButtonControl); - { TJvTipOfDay } - - procedure TJvTipOfDay.AutoExecute; - begin - FIsAutoExecute := True; - try - Execute; - finally - FIsAutoExecute := False; - end; - end; - - function TJvTipOfDay.CanShow: Boolean; - begin - // Show the dialog if the user called Execute (FIsAutoExecute=False) or - // if flag toShowOnStartUp is in Options.. - Result := not FIsAutoExecute or (toShowOnStartUp in Options); - - // ..but enable the user to override this behaviour - if not (csDesigning in ComponentState) and Assigned(FOnCanShow) then - FOnCanShow(Self, Result); - end; - constructor TJvTipOfDay.Create(AOwner: TComponent); begin ! inherited; FTips := TStringList.Create; --- 166,172 ---- TButtonControlAccess = class(TButtonControl); constructor TJvTipOfDay.Create(AOwner: TComponent); begin ! inherited Create(AOwner); FTips := TStringList.Create; *************** *** 250,254 **** FButtonNext.Free; FButtonClose.Free; ! inherited; end; --- 207,232 ---- FButtonNext.Free; FButtonClose.Free; ! inherited Destroy; ! end; ! ! procedure TJvTipOfDay.AutoExecute; ! begin ! FIsAutoExecute := True; ! try ! Execute; ! finally ! FIsAutoExecute := False; ! end; ! end; ! ! function TJvTipOfDay.CanShow: Boolean; ! begin ! // Show the dialog if the user called Execute (FIsAutoExecute=False) or ! // if flag toShowOnStartUp is in Options.. ! Result := not FIsAutoExecute or (toShowOnStartUp in Options); ! ! // ..but enable the user to override this behaviour ! if not (csDesigning in ComponentState) and Assigned(FOnCanShow) then ! FOnCanShow(Self, Result); end; *************** *** 257,261 **** if csDesigning in ComponentState then Exit; - if Assigned(FOnAfterExecute) then FOnAfterExecute(Self); --- 235,238 ---- *************** *** 345,352 **** end; ! function TJvTipOfDay.HookProc(var Message: TMessage): Boolean; begin Result := False; ! case Message.Msg of WM_ACTIVATEAPP: begin --- 322,329 ---- end; ! function TJvTipOfDay.HookProc(var Msg: TMessage): Boolean; begin Result := False; ! case Msg.Msg of WM_ACTIVATEAPP: begin *************** *** 359,362 **** --- 336,340 ---- FDummyMsgSend := True; end; + // (rom) better use a private message value WM_NULL: if not FRunning and FDummyMsgSend then *************** *** 599,603 **** procedure TJvTipOfDay.Loaded; begin ! inherited; if csDesigning in ComponentState then Exit; --- 577,581 ---- procedure TJvTipOfDay.Loaded; begin ! inherited Loaded; if csDesigning in ComponentState then Exit; *************** *** 622,626 **** Free; end ! else if FileExists(AFileName) then Tips.LoadFromFile(AFileName); end; --- 600,605 ---- Free; end ! else ! if FileExists(AFileName) then Tips.LoadFromFile(AFileName); end; Index: JvTipOfDayProp.pas =================================================================== RCS file: /cvsroot/jvcl/rm/source/JvTipOfDayProp.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** JvTipOfDayProp.pas 9 Jan 2003 13:36:09 -0000 1.1 --- JvTipOfDayProp.pas 13 Feb 2003 13:53:21 -0000 1.2 *************** *** 34,38 **** uses ! {$IFDEF COMPILER6_UP}DesignEditors, DesignIntf{$ELSE}DsgnIntf{$ENDIF}; type { a component editor that shows the 'Tip of the Day' dialog } --- 34,43 ---- uses ! {$IFDEF COMPILER6_UP} ! DesignEditors, DesignIntf; ! {$ELSE} ! DsgnIntf; ! {$ENDIF} ! type { a component editor that shows the 'Tip of the Day' dialog } *************** *** 51,57 **** uses ! SysUtils, JvTipOfDay; ! ! { TJvTipOfDayEditor } procedure TJvTipOfDayEditor.Edit; --- 56,61 ---- uses ! SysUtils, ! JvTipOfDay; procedure TJvTipOfDayEditor.Edit; *************** *** 59,70 **** SavedOptions: TJvTipOfDayOptions; begin ! {$IFDEF COMPILER6_UP} with GetComponent as TJvTipOfDay do begin ! {$ELSE} if Component is TJvTipOfDay then with TJvTipOfDay(Component) do begin ! {$ENDIF} SavedOptions := Options; Options := [toShowOnStartUp]; --- 63,74 ---- SavedOptions: TJvTipOfDayOptions; begin ! {$IFDEF COMPILER6_UP} with GetComponent as TJvTipOfDay do begin ! {$ELSE} if Component is TJvTipOfDay then with TJvTipOfDay(Component) do begin ! {$ENDIF} SavedOptions := Options; Options := [toShowOnStartUp]; *************** *** 82,86 **** Edit else ! inherited; end; --- 86,90 ---- Edit else ! inherited ExecuteVerb(Index); end; Index: JvToolBar.pas =================================================================== RCS file: /cvsroot/jvcl/rm/source/JvToolBar.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** JvToolBar.pas 9 Jan 2003 13:36:09 -0000 1.1 --- JvToolBar.pas 13 Feb 2003 13:53:21 -0000 1.2 *************** *** 29,43 **** unit JvToolBar; - - interface uses ! Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, JvTypes, JVCLVer; type TJvToolBar = class(TToolBar) private ! FColor: TColor; FSaved: TColor; FOnMouseEnter: TNotifyEvent; --- 29,43 ---- unit JvToolBar; interface uses ! Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ! JvTypes, JVCLVer; type TJvToolBar = class(TToolBar) private ! FAboutJVCL: TJVCLAboutInfo; ! FHintColor: TColor; FSaved: TColor; FOnMouseEnter: TNotifyEvent; *************** *** 46,50 **** FOnCtl3DChanged: TNotifyEvent; FOver: Boolean; - FAboutJVCL: TJVCLAboutInfo; procedure MouseEnter(var Msg: TMessage); message CM_MOUSEENTER; procedure MouseLeave(var Msg: TMessage); message CM_MOUSELEAVE; --- 46,49 ---- *************** *** 56,60 **** published property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False; ! property HintColor: TColor read FColor write FColor default clInfoBk; property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; --- 55,59 ---- published property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False; ! property HintColor: TColor read FHintColor write FHintColor default clInfoBk; property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; *************** *** 65,80 **** implementation - {***********************************************} - constructor TJvToolBar.Create(AOwner: TComponent); begin inherited Create(AOwner); ! FColor := clInfoBk; FOver := False; ControlStyle := ControlStyle + [csAcceptsControls]; end; - {*****************************************... [truncated message content] |