From: Robert M. <mar...@us...> - 2004-10-27 06:13:49
|
Update of /cvsroot/jvcl/dev/JVCL3/run In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26366/JVCL3/run Modified Files: JvEdit.pas JvMemoryDataset.pas JvResources.pas JvXPBar.pas JvgStaticText.pas Log Message: style cleaning Index: JvEdit.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvEdit.pas,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** JvEdit.pas 26 Oct 2004 18:15:00 -0000 1.54 --- JvEdit.pas 27 Oct 2004 06:13:38 -0000 1.55 *************** *** 56,60 **** const // clGrayText = clDark; // (ahuser) This is wrong in QGraphics. ! // Since when is clGrayText = clLight = clWhite? clGrayText = clDisabledText; {$ENDIF VisualCLX} --- 56,60 ---- const // clGrayText = clDark; // (ahuser) This is wrong in QGraphics. ! // Since when is clGrayText = clLight = clWhite? clGrayText = clDisabledText; {$ENDIF VisualCLX} *************** *** 293,302 **** //=== Local procedures ======================================================= ! function StrFillChar(Ch: Char; Length: Cardinal): string; ! begin ! SetLength(Result, Length); ! if Length > 0 then ! FillChar(Result[1], Length, Ch); ! end; function TextFitsInCtrl(Control: TControl; const Text: string): Boolean; --- 293,297 ---- //=== Local procedures ======================================================= ! // (rom) StrFillChar replaced by StringOfChar function TextFitsInCtrl(Control: TControl; const Text: string): Boolean; *************** *** 323,327 **** end; ! //=== TJvCustomEdit ========================================================== procedure TJvCustomEdit.CaretChanged(Sender: TObject); --- 318,355 ---- end; ! //=== { TJvCustomEdit } ====================================================== ! ! constructor TJvCustomEdit.Create(AOwner: TComponent); ! begin ! inherited Create(AOwner); ! {$IFDEF VisualCLX} ! FNullPixmap := QPixmap_create(1, 1, 1, QPixmapOptimization_DefaultOptim); ! {$ENDIF VisualCLX} ! FAlignment := taLeftJustify; ! // ControlStyle := ControlStyle + [csAcceptsControls]; ! ClipboardCommands := [caCopy..caUndo]; ! FDisabledColor := clWindow; ! FDisabledTextColor := clGrayText; ! FHotTrack := False; ! FCaret := TJvCaret.Create(Self); ! FCaret.OnChanged := CaretChanged; ! FStreamedSelLength := 0; ! FStreamedSelStart := 0; ! FUseFixedPopup := True; // asn: clx not implemented yet ! FMaxPixel := TJvMaxPixel.Create(Self); ! FMaxPixel.OnChanged := MaxPixelChanged; ! FGroupIndex := -1; ! FEmptyFontColor := clGrayText; ! end; ! ! destructor TJvCustomEdit.Destroy; ! begin ! FMaxPixel.Free; ! FCaret.Free; ! {$IFDEF VisualCLX} ! QPixmap_destroy(FNullPixmap); ! {$ENDIF VisualCLX} ! inherited Destroy; ! end; procedure TJvCustomEdit.CaretChanged(Sender: TObject); *************** *** 373,407 **** {$ENDIF VisualCLX} - constructor TJvCustomEdit.Create(AOwner: TComponent); - begin - inherited Create(AOwner); - {$IFDEF VisualCLX} - FNullPixmap := QPixmap_create(1, 1, 1, QPixmapOptimization_DefaultOptim); - {$ENDIF VisualCLX} - FAlignment := taLeftJustify; - // ControlStyle := ControlStyle + [csAcceptsControls]; - ClipboardCommands := [caCopy..caUndo]; - FDisabledColor := clWindow; - FDisabledTextColor := clGrayText; - FHotTrack := False; - FCaret := TJvCaret.Create(Self); - FCaret.OnChanged := CaretChanged; - FStreamedSelLength := 0; - FStreamedSelStart := 0; - FUseFixedPopup := True; // asn: clx not implemented yet - FMaxPixel := TJvMaxPixel.Create(Self); - FMaxPixel.OnChanged := MaxPixelChanged; - FGroupIndex := -1; - FEmptyFontColor := clGrayText; - end; - {$IFDEF VCL} procedure TJvCustomEdit.CreateHandle; {$ENDIF VCL} {$IFDEF VisualCLX} procedure TJvCustomEdit.InitWidget; - {$ENDIF VisualCLX} begin ! inherited; if Focused then DoEmptyValueEnter --- 401,418 ---- {$ENDIF VisualCLX} {$IFDEF VCL} procedure TJvCustomEdit.CreateHandle; + begin + inherited CreateHandle; + if Focused then + DoEmptyValueEnter + else + DoEmptyValueExit; + end; {$ENDIF VCL} {$IFDEF VisualCLX} procedure TJvCustomEdit.InitWidget; begin ! inherited InitWidget; if Focused then DoEmptyValueEnter *************** *** 409,412 **** --- 420,424 ---- DoEmptyValueExit; end; + {$ENDIF VisualCLX} {$IFDEF VCL} *************** *** 445,458 **** {$ENDIF VCL} - destructor TJvCustomEdit.Destroy; - begin - FMaxPixel.Free; - FCaret.Free; - {$IFDEF VisualCLX} - QPixmap_destroy(FNullPixmap); - {$ENDIF VisualCLX} - inherited Destroy; - end; - procedure TJvCustomEdit.DoClearText; begin --- 457,460 ---- *************** *** 480,484 **** if EmptyValue <> '' then begin ! if (inherited Text = EmptyValue) then begin inherited Text := ''; --- 482,486 ---- if EmptyValue <> '' then begin ! if (inherited Text) = EmptyValue then begin inherited Text := ''; *************** *** 612,616 **** Result := inherited GetText; {$ENDIF VisualCLX} - finally ProtectPassword := Tmp; --- 614,617 ---- *************** *** 713,717 **** S := Text else ! S := StrFillChar(PasswordChar, Length(Text)); if not PaintEdit(Self, S, FAlignment, False, {0,} FDisabledTextColor, Focused, Flat, Canvas) then --- 714,718 ---- S := Text else ! S := StringOfChar(PasswordChar, Length(Text)); if not PaintEdit(Self, S, FAlignment, False, {0,} FDisabledTextColor, Focused, Flat, Canvas) then *************** *** 859,863 **** procedure TJvCustomEdit.SetText(const Value: TCaption); begin ! if (csLoading in ComponentState) then begin inherited Text := Value; --- 860,864 ---- procedure TJvCustomEdit.SetText(const Value: TCaption); begin ! if csLoading in ComponentState then begin inherited Text := Value; *************** *** 919,923 **** S := Text else ! S := StrFillChar(PasswordChar, Length(Text)); Canvas := nil; try --- 920,924 ---- S := Text else ! S := StringOfChar(PasswordChar, Length(Text)); Canvas := nil; try Index: JvResources.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvResources.pas,v retrieving revision 1.91 retrieving revision 1.92 diff -C2 -d -r1.91 -r1.92 *** JvResources.pas 22 Oct 2004 21:18:03 -0000 1.91 --- JvResources.pas 27 Oct 2004 06:13:38 -0000 1.92 *************** *** 2060,2063 **** --- 2060,2065 ---- resourcestring RsUntitled = 'untitled'; + RsUntitledFmt = '(%s %d)'; + RsHintShortcutFmt = '%s (%s)'; {$ENDIF USEJVCL} Index: JvgStaticText.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvgStaticText.pas,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** JvgStaticText.pas 25 Oct 2004 09:49:07 -0000 1.23 --- JvgStaticText.pas 27 Oct 2004 06:13:38 -0000 1.24 *************** *** 211,227 **** procedure DrawLine(AdditSpace: Integer); var ! i, DrawPos1, DrawPos2: Integer; Lexem: string; Size: TSize; ! X, X_: Single; begin DrawPos1 := DrawPos; DrawPos2 := DrawPos; X := 0.0; ! X_ := 0.0; LineWidth := 0; ! for i := 1 to LexemCount do begin ! Lexem := GetNextLexem(DrawPos1, DrawPos2, i = 1); // if LexemCount=1 then Lexem:=Lexem+' '; GetTextExtentPoint32(Canvas.Handle, PChar(Lexem), Length(Lexem), Size); --- 211,227 ---- procedure DrawLine(AdditSpace: Integer); var ! I, DrawPos1, DrawPos2: Integer; Lexem: string; Size: TSize; ! X, X2: Single; begin DrawPos1 := DrawPos; DrawPos2 := DrawPos; X := 0.0; ! X2 := 0.0; LineWidth := 0; ! for I := 1 to LexemCount do begin ! Lexem := GetNextLexem(DrawPos1, DrawPos2, I = 1); // if LexemCount=1 then Lexem:=Lexem+' '; GetTextExtentPoint32(Canvas.Handle, PChar(Lexem), Length(Lexem), Size); *************** *** 232,238 **** if LexemCount > 1 then X := X + AdditSpace / (LexemCount - 1); ! TextOut(Canvas.Handle, Trunc(X_), LineNo * TextHeight, PChar(Lexem), Length(Lexem)); ! X_ := X; DrawPos1 := DrawPos2; end; --- 232,238 ---- if LexemCount > 1 then X := X + AdditSpace / (LexemCount - 1); ! TextOut(Canvas.Handle, Trunc(X2), LineNo * TextHeight, PChar(Lexem), Length(Lexem)); ! X2 := X; DrawPos1 := DrawPos2; end; *************** *** 241,245 **** procedure DrawLineLeftAligned; var ! i, DrawPos1, DrawPos2: Integer; Lexem: string; begin --- 241,245 ---- procedure DrawLineLeftAligned; var ! I, DrawPos1, DrawPos2: Integer; Lexem: string; begin *************** *** 247,253 **** DrawPos2 := DrawPos; LineWidth := 0; ! for i := 1 to LexemCount do begin ! Lexem := Lexem + GetNextLexem(DrawPos1, DrawPos2, i = 1); DrawPos1 := DrawPos2; end; --- 247,253 ---- DrawPos2 := DrawPos; LineWidth := 0; ! for I := 1 to LexemCount do begin ! Lexem := Lexem + GetNextLexem(DrawPos1, DrawPos2, I = 1); DrawPos1 := DrawPos2; end; Index: JvMemoryDataset.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvMemoryDataset.pas,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** JvMemoryDataset.pas 26 Oct 2004 18:19:59 -0000 1.23 --- JvMemoryDataset.pas 27 Oct 2004 06:13:38 -0000 1.24 *************** *** 75,79 **** type //----------------- Added by CFZ ----------------------------- - TPVariant = ^Variant; TApplyMode = (amNone, amAppend, amMerge); TRecordStatus = (rsOriginal, rsUpdated, rsInserted, rsDeleted); --- 75,78 ---- *************** *** 277,280 **** --- 276,280 ---- property OnPostError; //------------------- Added by CFZ --------------------------------- + // (rom) names not acceptable. Add prefix "On". property BeforeApply: TDatasetNotifyEvent read FBeforeApply write FBeforeApply; property AfterApply: TDatasetNotifyEvent read FAfterApply write FAfterApply; *************** *** 328,342 **** uses ! {$IFDEF UNITVERSIONING} JclUnitVersioning, ! {$ENDIF UNITVERSIONING} Forms, Dialogs, DbConsts, Math, JvResources; const ! ftBlobTypes = [ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftOraBlob, ftOraClob]; ! ftSupported = [ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftDate, ftTime, ftDateTime, ftAutoInc, ftBCD, ftBytes, ftVarBytes, ftADT, ftFixedChar, ftWideString, --- 328,344 ---- uses ! {$IFDEF UNITVERSIONING} JclUnitVersioning, ! {$ENDIF UNITVERSIONING} Forms, Dialogs, DbConsts, Math, JvResources; const ! ftBlobTypes = ! [ftBlob, ftMemo, ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary, ftOraBlob, ftOraClob]; ! ftSupported = ! [ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftDate, ftTime, ftDateTime, ftAutoInc, ftBCD, ftBytes, ftVarBytes, ftADT, ftFixedChar, ftWideString, *************** *** 350,354 **** //-------- Added by CFZ -------------------- STATUSNAME = 'C67F70Z90'; (* Magic *) ! //------------------------------------------ { Utility routines } --- 352,359 ---- //-------- Added by CFZ -------------------- STATUSNAME = 'C67F70Z90'; (* Magic *) ! ! type ! //-------- Added by CFZ -------------------- ! PVariant = ^Variant; { Utility routines } *************** *** 368,372 **** Inc(Result); ftSmallint: ! Result := SizeOf(SmallInt); ftInteger: Result := SizeOf(Longint); --- 373,377 ---- Inc(Result); ftSmallint: ! Result := SizeOf(Smallint); ftInteger: Result := SizeOf(Longint); *************** *** 535,539 **** var I: Integer; ! PFValues: TPVariant; begin //------- Added by CFZ ------------------ --- 540,544 ---- var I: Integer; ! PFValues: PVariant; begin //------- Added by CFZ ------------------ *************** *** 567,605 **** Result := AnsiCompareStr(PChar(Data1), PChar(Data2)); ftSmallint: ! if SmallInt(Data1^) > SmallInt(Data2^) then Result := 1 else ! if SmallInt(Data1^) < SmallInt(Data2^) then ! Result := -1; ftInteger, ftDate, ftTime, ftAutoInc: if Longint(Data1^) > Longint(Data2^) then Result := 1 else ! if Longint(Data1^) < Longint(Data2^) then ! Result := -1; ftWord: if Word(Data1^) > Word(Data2^) then Result := 1 else ! if Word(Data1^) < Word(Data2^) then ! Result := -1; ftBoolean: if WordBool(Data1^) and not WordBool(Data2^) then Result := 1 else ! if not WordBool(Data1^) and WordBool(Data2^) then ! Result := -1; ftFloat, ftCurrency: if Double(Data1^) > Double(Data2^) then Result := 1 else ! if Double(Data1^) < Double(Data2^) then ! Result := -1; ftDateTime: if TDateTime(Data1^) > TDateTime(Data2^) then Result := 1 else ! if TDateTime(Data1^) < TDateTime(Data2^) then ! Result := -1; ftFixedChar: if CaseInsensitive then --- 572,610 ---- Result := AnsiCompareStr(PChar(Data1), PChar(Data2)); ftSmallint: ! if Smallint(Data1^) > Smallint(Data2^) then Result := 1 else ! if Smallint(Data1^) < Smallint(Data2^) then ! Result := -1; ftInteger, ftDate, ftTime, ftAutoInc: if Longint(Data1^) > Longint(Data2^) then Result := 1 else ! if Longint(Data1^) < Longint(Data2^) then ! Result := -1; ftWord: if Word(Data1^) > Word(Data2^) then Result := 1 else ! if Word(Data1^) < Word(Data2^) then ! Result := -1; ftBoolean: if WordBool(Data1^) and not WordBool(Data2^) then Result := 1 else ! if not WordBool(Data1^) and WordBool(Data2^) then ! Result := -1; ftFloat, ftCurrency: if Double(Data1^) > Double(Data2^) then Result := 1 else ! if Double(Data1^) < Double(Data2^) then ! Result := -1; ftDateTime: if TDateTime(Data1^) > TDateTime(Data2^) then Result := 1 else ! if TDateTime(Data1^) < TDateTime(Data2^) then ! Result := -1; ftFixedChar: if CaseInsensitive then *************** *** 618,623 **** Result := 1 else ! if Int64(Data1^) < Int64(Data2^) then ! Result := -1; ftVariant: Result := 0; --- 623,628 ---- Result := 1 else ! if Int64(Data1^) < Int64(Data2^) then ! Result := -1; ftVariant: Result := 0; *************** *** 678,686 **** begin for I := 0 to FieldCount - 1 do - begin with Fields[I] do if (FieldKind in fkStoredFields) and not (DataType in ftSupported) then ErrorFmt(SUnknownFieldType, [DisplayName]); - end; FreeIndexList; end; --- 683,689 ---- *************** *** 693,700 **** FOffsets^[I] := Offset; with FieldDefList[I] do - begin if DataType in ftSupported - ftBlobTypes then Inc(Offset, CalcFieldLen(DataType, Size) + 1); - end; end; end; --- 696,701 ---- *************** *** 843,849 **** Result := grError else ! if Filtered then ! if not RecordFilter then ! Result := grError; gmNext: if FRecordPos >= RecordCount - 1 then --- 844,850 ---- Result := grError else ! if Filtered then ! if not RecordFilter then ! Result := grError; gmNext: if FRecordPos >= RecordCount - 1 then *************** *** 866,871 **** RecordToBuffer(Records[FRecordPos], Buffer) else ! if (Result = grError) and DoCheck then ! Error(RsEMemNoRecords); end; --- 867,872 ---- RecordToBuffer(Records[FRecordPos], Buffer) else ! if (Result = grError) and DoCheck then ! Error(RsEMemNoRecords); end; *************** *** 926,936 **** end else ! if State in [dsBrowse, dsEdit, dsInsert, dsCalcFields] then ! begin ! Inc(RecBuf, FRecordSize + Field.Offset); ! Result := RecBuf[0] <> #0; ! if Result and (Buffer <> nil) then ! Move(RecBuf[1], Buffer^, Field.DataSize); ! end; end; --- 927,937 ---- end else ! if State in [dsBrowse, dsEdit, dsInsert, dsCalcFields] then ! begin ! Inc(RecBuf, FRecordSize + Field.Offset); ! Result := RecBuf[0] <> #0; ! if Result and (Buffer <> nil) then ! Move(RecBuf[1], Buffer^, Field.DataSize); ! end; end; *************** *** 963,968 **** else VarData := EmptyParam; ! Data[0] := Char(Ord((Buffer <> nil) and not ! (VarIsNull(VarData) or VarIsEmpty(VarData)))); if Data[0] <> #0 then begin --- 964,969 ---- else VarData := EmptyParam; ! Data[0] := Char(Ord((Buffer <> nil) and ! not (VarIsNull(VarData) or VarIsEmpty(VarData)))); if Data[0] <> #0 then begin *************** *** 1037,1040 **** --- 1038,1042 ---- OnFilterRecord(Self, Result); except + // (rom) InternalHandleExeception ? Application.HandleException(Self); end; *************** *** 1093,1098 **** Result := -1 else ! if TBookmarkData(Bookmark1^) > TBookmarkData(Bookmark2^) then ! Result := 1 else if TBookmarkData(Bookmark1^) < TBookmarkData(Bookmark2^) then --- 1095,1100 ---- Result := -1 else ! if TBookmarkData(Bookmark1^) > TBookmarkData(Bookmark2^) then ! Result := 1 else if TBookmarkData(Bookmark1^) < TBookmarkData(Bookmark2^) then *************** *** 1247,1251 **** //---- Added by CFZ --------------- Status: TRecordStatus; ! PFValues: TPVariant; //--------------------------------- begin --- 1249,1253 ---- //---- Added by CFZ --------------- Status: TRecordStatus; ! PFValues: PVariant; //--------------------------------- begin *************** *** 1258,1262 **** Status := TRecordStatus(FieldByName(FStatusName).AsInteger); if Status <> rsInserted then - begin if FApplyMode = amAppend then begin --- 1260,1263 ---- *************** *** 1269,1273 **** PFValues^ := GetValues; end; - end; end; //---------------------------------------------------------------------- --- 1270,1273 ---- *************** *** 1315,1319 **** (* If (State = dsEdit) And (Status In [rsInserted,rsUpdated]) Then NewChange := False; *) if (State = dsEdit) and (Status = rsOriginal) then - begin if FApplyMode = amAppend then begin --- 1315,1318 ---- *************** *** 1326,1332 **** FieldByName(FStatusName).AsInteger := Integer(rsUpdated); end; - end; if State = dsInsert then - begin if IsDeleted(Index) then begin --- 1325,1329 ---- *************** *** 1342,1346 **** FieldByName(FStatusName).AsInteger := Integer(rsInserted); end; - end; end; //--------------------------------------------------------------------------- --- 1339,1342 ---- *************** *** 1390,1394 **** end; end; ! inherited; except SysUtils.Abort; --- 1386,1390 ---- end; end; ! inherited Open; except SysUtils.Abort; *************** *** 1594,1599 **** end; - //---------------------------------------------------------------------------------------- - procedure TJvMemoryData.FixReadOnlyFields(MakeReadOnly: Boolean); var --- 1590,1593 ---- *************** *** 1692,1696 **** Append; AssignRecord(Source, Self, True); ! // assign AutoInc value manually (make usre to keep largest if source isn't sorted by autoinc field) if (FAutoIncField <> nil) and (FSrcAutoIncField <> nil) then FAutoInc := Max(FAutoInc, FSrcAutoIncField.AsInteger); --- 1686,1690 ---- Append; AssignRecord(Source, Self, True); ! // assign AutoInc value manually (make user to keep largest if source isn't sorted by AutoInc field) if (FAutoIncField <> nil) and (FSrcAutoIncField <> nil) then FAutoInc := Max(FAutoInc, FSrcAutoIncField.AsInteger); *************** *** 1733,1737 **** ! function TJvMemoryData.SaveToDataSet(Dest: TDataSet; RecordCount: Integer; DisableAllControls: Boolean = True): Integer; var MovedCount: Integer; --- 1727,1732 ---- ! function TJvMemoryData.SaveToDataSet(Dest: TDataSet; RecordCount: Integer; ! DisableAllControls: Boolean = True): Integer; var MovedCount: Integer; *************** *** 2003,2009 **** function TJvMemoryData.CopyFromDataset: Integer; var ! bOpen: Boolean; I, Len: Integer; ! FOriginal, FClient: TField; begin Result := 0; --- 1998,2004 ---- function TJvMemoryData.CopyFromDataset: Integer; var ! BOpen: Boolean; I, Len: Integer; ! LOriginal, LClient: TField; begin Result := 0; *************** *** 2016,2022 **** if Len < 1 then Exit; ! bOpen := FDataSet.Active; try ! if not bOpen then FDataSet.Open; except --- 2011,2017 ---- if Len < 1 then Exit; ! BOpen := FDataSet.Active; try ! if not BOpen then FDataSet.Open; except *************** *** 2025,2029 **** if FDataSet.IsEmpty then begin ! if not bOpen then FDataSet.Close; Exit; --- 2020,2024 ---- if FDataSet.IsEmpty then begin ! if not BOpen then FDataSet.Close; Exit; *************** *** 2040,2052 **** for I := 0 to Len do begin ! FClient := Fields[I]; ! FOriginal := FDataSet.FindField(FClient.FieldName); ! if (FClient <> nil) and (FOriginal <> nil) then ! begin ! if FOriginal.IsNull then Fields[I].Clear else ! Fields[I].Value := FOriginal.Value; ! end; end; FieldByName(FStatusName).AsInteger := Integer(rsOriginal); --- 2035,2045 ---- for I := 0 to Len do begin ! LClient := Fields[I]; ! LOriginal := FDataSet.FindField(LClient.FieldName); ! if (LClient <> nil) and (LOriginal <> nil) then ! if LOriginal.IsNull then Fields[I].Clear else ! Fields[I].Value := LOriginal.Value; end; FieldByName(FStatusName).AsInteger := Integer(rsOriginal); *************** *** 2059,2063 **** EnableControls; FDataSet.EnableControls; ! if not bOpen then FDataSet.Close; end; --- 2052,2056 ---- EnableControls; FDataSet.EnableControls; ! if not BOpen then FDataSet.Close; end; *************** *** 2091,2095 **** var I: Integer; ! PFValues: TPVariant; begin if FDeletedValues.Count > 0 then --- 2084,2088 ---- var I: Integer; ! PFValues: PVariant; begin if FDeletedValues.Count > 0 then *************** *** 2134,2163 **** function TJvMemoryData.ApplyChanges: Boolean; var ! xKey: Variant; ! PxKey: TPVariant; Len, Row: Integer; Status: TRecordStatus; ! bFound, bApply: Boolean; ! FOriginal, FClient: TField; function WriteFields: Boolean; ! var J: Integer; begin try for J := 0 to Len do ! begin ! if (Fields[J].FieldKind = fkData) then begin ! FClient := Fields[J]; ! FOriginal := FDataset.FindField(FClient.FieldName); ! if (FOriginal <> nil) and (FClient <> nil) then ! begin ! if FClient.IsNull then ! FOriginal.Clear else ! FDataset.FieldByName(FOriginal.FieldName).Value := FClient.Value; ! end; end; - end; Result := True; except --- 2127,2153 ---- function TJvMemoryData.ApplyChanges: Boolean; var ! XKey: Variant; ! PXKey: PVariant; Len, Row: Integer; Status: TRecordStatus; ! BFound, BApply: Boolean; ! LOriginal, LClient: TField; function WriteFields: Boolean; ! var ! J: Integer; begin try for J := 0 to Len do ! if Fields[J].FieldKind = fkData then begin ! LClient := Fields[J]; ! LOriginal := FDataset.FindField(LClient.FieldName); ! if (LOriginal <> nil) and (LClient <> nil) then ! if LClient.IsNull then ! LOriginal.Clear else ! FDataset.FieldByName(LOriginal.FieldName).Value := LClient.Value; end; Result := True; except *************** *** 2211,2234 **** try First; ! while not EOF do begin Status := TRecordStatus(FieldByName(FStatusName).AsInteger); ! if (Status <> rsOriginal) then begin ! xKey := GetValues; ! bFound := FDataset.Locate(FKeyFieldNames, xKey, []); ! DoBeforeApplyRecord(FDataset, Status, bFound); ! bApply := False; (********************* New Record ***********************) if IsInserted then begin ! if not bFound then // Not Exists in Original begin if InsertRec then begin Inc(Result); ! bApply := True; end ! else if FExactApply then begin Error(RsEInsertError); --- 2201,2225 ---- try First; ! while not Eof do begin Status := TRecordStatus(FieldByName(FStatusName).AsInteger); ! if Status <> rsOriginal then begin ! XKey := GetValues; ! BFound := FDataset.Locate(FKeyFieldNames, XKey, []); ! DoBeforeApplyRecord(FDataset, Status, BFound); ! BApply := False; (********************* New Record ***********************) if IsInserted then begin ! if not BFound then // Not Exists in Original begin if InsertRec then begin Inc(Result); ! BApply := True; end ! else ! if FExactApply then begin Error(RsEInsertError); *************** *** 2238,2261 **** begin SysUtils.Abort; ! if (FDataset.State in dsEditModes) then FDataset.Cancel; end; end ! else if FExactApply then // Exists in Original begin Error(RsERecordDuplicate); Break; end ! else if (FApplyMode = amMerge) then begin if UpdateRec then begin Inc(Result); ! bApply := True; end else begin SysUtils.Abort; ! if (FDataset.State in dsEditModes) then FDataset.Cancel; end; --- 2229,2255 ---- begin SysUtils.Abort; ! // (rom) is this code ever reached? ! if FDataset.State in dsEditModes then FDataset.Cancel; end; end ! else ! if FExactApply then // Exists in Original begin Error(RsERecordDuplicate); Break; end ! else ! if FApplyMode = amMerge then begin if UpdateRec then begin Inc(Result); ! BApply := True; end else begin SysUtils.Abort; ! if FDataset.State in dsEditModes then FDataset.Cancel; end; *************** *** 2265,2276 **** if IsUpdated then begin ! if bFound then // Exists in Original begin if UpdateRec then begin Inc(Result); ! bApply := True; end ! else if FExactApply then begin Error(RsEUpdateError); --- 2259,2271 ---- if IsUpdated then begin ! if BFound then // Exists in Original begin if UpdateRec then begin Inc(Result); ! BApply := True; end ! else ! if FExactApply then begin Error(RsEUpdateError); *************** *** 2280,2329 **** begin SysUtils.Abort; ! if (FDataset.State in dsEditModes) then FDataset.Cancel; end; end ! else if FExactApply then // Not exists in Original begin Error(RsERecordInexistent); Break; end ! else if (FApplyMode = amMerge) then begin ! if InsertRec then begin Inc(Result); ! bApply := True; end else begin SysUtils.Abort; ! if (FDataset.State in dsEditModes) then FDataset.Cancel; end; end; end; ! DoAfterApplyRecord(FDataset, Status, bApply); end; Next; end; (*********************** Deleted Records **************************) ! if (FApplyMode = amMerge) then begin for I := 0 to FDeletedValues.Count - 1 do begin Status := rsDeleted; ! PxKey := FDeletedValues[I]; ! xKey := PxKey^; ! bFound := FDataset.Locate(FKeyFieldNames, xKey, []); ! DoBeforeApplyRecord(FDataset, Status, bFound); ! bApply := False; ! if bFound then // Exists in Original begin if DeleteRec then begin Inc(Result); ! bApply := True; end ! else if FExactApply then begin Error(RsEDeleteError); --- 2275,2328 ---- begin SysUtils.Abort; ! if FDataset.State in dsEditModes then FDataset.Cancel; end; end ! else ! if FExactApply then // Not exists in Original begin Error(RsERecordInexistent); Break; end ! else ! if FApplyMode = amMerge then begin ! if InsertRec then ! begin Inc(Result); ! BApply := True; end else begin SysUtils.Abort; ! if FDataset.State in dsEditModes then FDataset.Cancel; end; end; end; ! DoAfterApplyRecord(FDataset, Status, BApply); end; Next; end; (*********************** Deleted Records **************************) ! if FApplyMode = amMerge then begin for I := 0 to FDeletedValues.Count - 1 do begin Status := rsDeleted; ! PXKey := FDeletedValues[I]; ! XKey := PXKey^; ! BFound := FDataset.Locate(FKeyFieldNames, XKey, []); ! DoBeforeApplyRecord(FDataset, Status, BFound); ! BApply := False; ! if BFound then // Exists in Original begin if DeleteRec then begin Inc(Result); ! BApply := True; end ! else ! if FExactApply then begin Error(RsEDeleteError); *************** *** 2333,2337 **** SysUtils.Abort; end ! else if FExactApply then // Not exists in Original begin Error(RsERecordInexistent); --- 2332,2337 ---- SysUtils.Abort; end ! else ! if FExactApply then // Not exists in Original begin Error(RsERecordInexistent); *************** *** 2341,2347 **** begin Inc(Result); ! bApply := True; end; ! DoAfterApplyRecord(FDataset, Status, bApply); end; end; --- 2341,2347 ---- begin Inc(Result); ! BApply := True; end; ! DoAfterApplyRecord(FDataset, Status, BApply); end; end; *************** *** 2362,2366 **** Exit; Len := FieldDefs.Count - 2; ! if (Len < 1) then Exit; try --- 2362,2366 ---- Exit; Len := FieldDefs.Count - 2; ! if Len < 1 then Exit; try *************** *** 2402,2423 **** var I, J, Len, Equals: Integer; ! PxKey: TPVariant; ! xKey, ValRow, ValDel: Variant; begin Result := -1; if VarIsNull(KeyValues) then Exit; ! PxKey := nil; Len := VarArrayHighBound(KeyValues, 1); try for I := 0 to FDeletedValues.Count - 1 do begin ! PxKey := FDeletedValues[I]; ! xKey := PxKey^; Equals := -1; for J := 0 to Len - 1 do begin ValRow := KeyValues[J]; ! ValDel := xKey[J]; {$IFDEF COMPILER6_UP} if VarCompareValue(ValRow, ValDel) = vrEqual then --- 2402,2423 ---- var I, J, Len, Equals: Integer; ! PXKey: PVariant; ! XKey, ValRow, ValDel: Variant; begin Result := -1; if VarIsNull(KeyValues) then Exit; ! PXKey := nil; Len := VarArrayHighBound(KeyValues, 1); try for I := 0 to FDeletedValues.Count - 1 do begin ! PXKey := FDeletedValues[I]; ! XKey := PXKey^; Equals := -1; for J := 0 to Len - 1 do begin ValRow := KeyValues[J]; ! ValDel := XKey[J]; {$IFDEF COMPILER6_UP} if VarCompareValue(ValRow, ValDel) = vrEqual then *************** *** 2438,2443 **** end; finally ! if not (PxKey = nil) then ! Dispose(PxKey); end; end; --- 2438,2443 ---- end; finally ! if PXKey <> nil then ! Dispose(PXKey); end; end; *************** *** 2544,2548 **** Result := Count; if Result > 0 then - begin if FCached then begin --- 2544,2547 ---- *************** *** 2556,2560 **** Inc(FPosition, Result); end; - end; end; end; --- 2555,2558 ---- Index: JvXPBar.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvXPBar.pas,v retrieving revision 1.79 retrieving revision 1.80 diff -C2 -d -r1.79 -r1.80 *** JvXPBar.pas 25 Oct 2004 18:25:51 -0000 1.79 --- JvXPBar.pas 27 Oct 2004 06:13:38 -0000 1.80 *************** *** 450,454 **** property RoundedItemFrame: Integer read FRoundedItemFrame write FRoundedItemFrame default 1; //DS property TopSpace: Integer read FTopSpace write SetTopSpace default 5; ! property AfterCollapsedChange: TJvXPBarOnCollapsedChangeEvent read FAfterCollapsedChange write FAfterCollapsedChange; --- 450,454 ---- property RoundedItemFrame: Integer read FRoundedItemFrame write FRoundedItemFrame default 1; //DS property TopSpace: Integer read FTopSpace write SetTopSpace default 5; ! // (rom) this name is not acceptable. Prefix with "On" property AfterCollapsedChange: TJvXPBarOnCollapsedChangeEvent read FAfterCollapsedChange write FAfterCollapsedChange; *************** *** 601,604 **** --- 601,606 ---- resourcestring RsUntitled = 'untitled'; + RsUntitledFmt = '(%s %d)"; + RsHintShortcutFmt = '%s (%s)'; {$ENDIF USEJVCL} *************** *** 684,688 **** procedure TJvXPBarItemActionLink.SetAutoCheck(Value: Boolean); begin ! if IsAutoCheckLinked then Client.AutoCheck := Value; end; {$ENDIF COMPILER6_UP} --- 686,691 ---- procedure TJvXPBarItemActionLink.SetAutoCheck(Value: Boolean); begin ! if IsAutoCheckLinked then ! Client.AutoCheck := Value; end; {$ENDIF COMPILER6_UP} *************** *** 784,787 **** --- 787,791 ---- if AComponent = FImageList then FImageList := nil; + // (rom) no inherited called? end; *************** *** 849,860 **** ItemCaption: TCaption; HasImages: Boolean; ! lBar: TJvXPCustomWinXPBar; begin ! lBar := (AWinXPBar as TJvXPCustomWinXPBar); HasImages := Self.Images <> nil; with ACanvas do begin ! Font.Assign(lBar.Font); ! Brush.Color := lBar.Colors.BodyColor; if not ShowItemFrame then FillRect(Rect); --- 853,864 ---- ItemCaption: TCaption; HasImages: Boolean; ! LBar: TJvXPCustomWinXPBar; begin ! LBar := (AWinXPBar as TJvXPCustomWinXPBar); HasImages := Self.Images <> nil; with ACanvas do begin ! Font.Assign(LBar.Font); ! Brush.Color := LBar.Colors.BodyColor; if not ShowItemFrame then FillRect(Rect); *************** *** 865,883 **** if dsFocused in State then begin ! if lBar.HotTrack then begin ! if lBar.FHotTrackColor <> clNone then ! Font.Color := lBar.FHotTrackColor; Font.Style := Font.Style + [fsUnderline]; end; if ShowItemFrame then begin ! Brush.Color := lBar.Colors.FocusedColor; ! if lBar.RoundedItemFrame > 0 then ! RoundedFrame(ACanvas, Rect, lBar.Colors.FocusedFrameColor, lBar.RoundedItemFrame) else begin FillRect(Rect); ! JvXPFrame3D(ACanvas, Rect, lBar.Colors.FocusedFrameColor, lBar.Colors.FocusedFrameColor); end; end; --- 869,887 ---- if dsFocused in State then begin ! if LBar.HotTrack then begin ! if LBar.FHotTrackColor <> clNone then ! Font.Color := LBar.FHotTrackColor; Font.Style := Font.Style + [fsUnderline]; end; if ShowItemFrame then begin ! Brush.Color := LBar.Colors.FocusedColor; ! if LBar.RoundedItemFrame > 0 then ! RoundedFrame(ACanvas, Rect, LBar.Colors.FocusedFrameColor, LBar.RoundedItemFrame) else begin FillRect(Rect); ! JvXPFrame3D(ACanvas, Rect, LBar.Colors.FocusedFrameColor, LBar.Colors.FocusedFrameColor); end; end; *************** *** 888,898 **** if ShowItemFrame then begin ! Brush.Color := lBar.Colors.CheckedColor; ! if lBar.RoundedItemFrame > 0 then ! RoundedFrame(ACanvas, Rect, lBar.Colors.CheckedFrameColor, lBar.RoundedItemFrame) else begin FillRect(Rect); ! JvXPFrame3D(ACanvas, Rect, lBar.Colors.CheckedFrameColor, lBar.Colors.CheckedFrameColor); end; end; --- 892,902 ---- if ShowItemFrame then begin ! Brush.Color := LBar.Colors.CheckedColor; ! if LBar.RoundedItemFrame > 0 then ! RoundedFrame(ACanvas, Rect, LBar.Colors.CheckedFrameColor, LBar.RoundedItemFrame) else begin FillRect(Rect); ! JvXPFrame3D(ACanvas, Rect, LBar.Colors.CheckedFrameColor, LBar.Colors.CheckedFrameColor); end; end; *************** *** 902,917 **** end; if HasImages then ! Draw(Rect.Left, Rect.Top + (lBar.FItemHeight - Bitmap.Height) div 2, Bitmap); ItemCaption := Self.Caption; ! if (ItemCaption = '') and ((csDesigning in lBar.ComponentState) or (lBar.ControlCount = 0)) then ! ItemCaption := Format('(%s %d)', [RsUntitled, Index]); Inc(Rect.Left, 20); SetBkMode(ACanvas.Handle, Windows.TRANSPARENT); {$IFDEF USEJVCL} ! DrawText(ACanvas, ItemCaption, -1, Rect, DT_SINGLELINE or ! DT_VCENTER or DT_END_ELLIPSIS); {$ELSE} ! DrawText(ACanvas.Handle, PAnsiChar(ItemCaption), -1, Rect, DT_SINGLELINE or ! DT_VCENTER or DT_END_ELLIPSIS); {$ENDIF USEJVCL} end; --- 906,921 ---- end; if HasImages then ! Draw(Rect.Left, Rect.Top + (LBar.FItemHeight - Bitmap.Height) div 2, Bitmap); ItemCaption := Self.Caption; ! if (ItemCaption = '') and ((csDesigning in LBar.ComponentState) or (LBar.ControlCount = 0)) then ! ItemCaption := Format(RsUntitledFmt, [RsUntitled, Index]); Inc(Rect.Left, 20); SetBkMode(ACanvas.Handle, Windows.TRANSPARENT); {$IFDEF USEJVCL} ! DrawText(ACanvas, ItemCaption, -1, Rect, ! DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS); {$ELSE} ! DrawText(ACanvas.Handle, PAnsiChar(ItemCaption), -1, Rect, ! DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS); {$ENDIF USEJVCL} end; *************** *** 1121,1125 **** constructor TJvXPBarItems.Create(WinXPBar: TJvXPCustomWinXPBar); begin ! inherited Create(GetItemClass()); FWinXPBar := WinXPBar; end; --- 1125,1129 ---- constructor TJvXPBarItems.Create(WinXPBar: TJvXPCustomWinXPBar); begin ! inherited Create(GetItemClass); FWinXPBar := WinXPBar; end; *************** *** 1356,1359 **** --- 1360,1364 ---- begin inherited Create; + // (rom) needs local color constants FBodyColor := TColor($00F7DFD6); FBorderColor := clWhite; *************** *** 1595,1599 **** NewHeight: Integer; begin ! { TODO: Check this!!! } if IsLocked then Exit; --- 1600,1604 ---- NewHeight: Integer; begin ! { TODO: Check this!!! } if IsLocked then Exit; *************** *** 1621,1627 **** Result.Right := Width - 3; if FRollMode = rmShrink then ! Result.Top := FC_HEADER_MARGIN + HeaderHeight + FC_ITEM_MARGIN div 2 + Index * FRollOffset - 4 + FTopSpace else ! Result.Top := FC_HEADER_MARGIN + HeaderHeight + FC_ITEM_MARGIN div 2 + Index * FItemHeight - 4 + FTopSpace; Result.Bottom := Result.Top + FItemHeight; end; --- 1626,1634 ---- Result.Right := Width - 3; if FRollMode = rmShrink then ! Result.Top := FC_HEADER_MARGIN + HeaderHeight + FC_ITEM_MARGIN div 2 + ! Index * FRollOffset - 4 + FTopSpace else ! Result.Top := FC_HEADER_MARGIN + HeaderHeight + FC_ITEM_MARGIN div 2 + ! Index * FItemHeight - 4 + FTopSpace; Result.Bottom := Result.Top + FItemHeight; end; *************** *** 1687,1691 **** begin inherited HookMouseEnter; ! if (FHoverIndex <> -1) then DoDrawItem(FHoverIndex, [dsFocused]); end; --- 1694,1698 ---- begin inherited HookMouseEnter; ! if FHoverIndex <> -1 then DoDrawItem(FHoverIndex, [dsFocused]); end; *************** *** 1694,1702 **** begin inherited HookMouseLeave; ! if (FHoverIndex <> -1) and (FVisibleItems[FHoverIndex] <> nil) and (not FVisibleItems[FHoverIndex].Checked) then DoDrawItem(FHoverIndex, []); end; procedure TJvXPCustomWinXPBar.HookMouseMove(X, Y: Integer); var Rect: TRect; --- 1701,1712 ---- begin inherited HookMouseLeave; ! if (FHoverIndex <> -1) and (FVisibleItems[FHoverIndex] <> nil) and ! (not FVisibleItems[FHoverIndex].Checked) then DoDrawItem(FHoverIndex, []); end; procedure TJvXPCustomWinXPBar.HookMouseMove(X, Y: Integer); + const + cPipe = '|'; var Rect: TRect; *************** *** 1711,1720 **** Windows.InvalidateRect(Handle, @Rect, False); if FShowLinkCursor then - begin if FHitTest <> htNone then Cursor := crHandPoint else Cursor := crDefault; - end; end; --- 1721,1728 ---- *************** *** 1726,1730 **** if (NewIndex >= 0) and (NewIndex < VisibleItems.Count) then begin ! if FStoredHint = '|' then FStoredHint := Hint; if Action is TCustomAction then --- 1734,1738 ---- if (NewIndex >= 0) and (NewIndex < VisibleItems.Count) then begin ! if FStoredHint = cPipe then FStoredHint := Hint; if Action is TCustomAction then *************** *** 1735,1741 **** else begin ! if FStoredHint <> '|' then inherited Hint := FStoredHint; ! FStoredHint := '|'; end; --- 1743,1749 ---- else begin ! if FStoredHint <> cPipe then inherited Hint := FStoredHint; ! FStoredHint := cPipe; end; *************** *** 1748,1752 **** DoDrawItem(FHoverIndex, []); FHoverIndex := NewIndex; ! if (FHoverIndex <> -1) and (FVisibleItems[FHoverIndex] <> nil) and (FVisibleItems[FHoverIndex].Enabled) then begin DoDrawItem(FHoverIndex, [dsFocused]); --- 1756,1761 ---- DoDrawItem(FHoverIndex, []); FHoverIndex := NewIndex; ! if (FHoverIndex <> -1) and (FVisibleItems[FHoverIndex] <> nil) and ! (FVisibleItems[FHoverIndex].Enabled) then begin DoDrawItem(FHoverIndex, [dsFocused]); *************** *** 1936,1946 **** AllowChange, CallInherited: Boolean; {$IFDEF VCL} ! lItem: TJvXPBarItem; {$ENDIF VCL} begin CallInherited := True; ! if (FShowRollButton) and (FHitTest <> htNone) then Collapsed := not Collapsed; ! if (FHoverIndex <> -1) and (FVisibleItems[FHoverIndex] <> nil) and (FVisibleItems[FHoverIndex].Enabled) then begin AllowChange := True; --- 1945,1956 ---- AllowChange, CallInherited: Boolean; {$IFDEF VCL} ! LItem: TJvXPBarItem; {$ENDIF VCL} begin CallInherited := True; ! if FShowRollButton and (FHitTest <> htNone) then Collapsed := not Collapsed; ! if (FHoverIndex <> -1) and (FVisibleItems[FHoverIndex] <> nil) and ! FVisibleItems[FHoverIndex].Enabled then begin AllowChange := True; *************** *** 1952,1957 **** //dejoy add {$IFDEF VCL} ! lItem := FVisibleItems[FHoverIndex]; ! with lItem do begin {$IFDEF COMPILER6_UP} --- 1962,1967 ---- //dejoy add {$IFDEF VCL} ! LItem := FVisibleItems[FHoverIndex]; ! with LItem do begin {$IFDEF COMPILER6_UP} *************** *** 1961,1965 **** if AutoCheck then {$ENDIF COMPILER6_UP} ! lItem.Checked := not lItem.Checked; end; {$ENDIF VCL} --- 1971,1975 ---- if AutoCheck then {$ENDIF COMPILER6_UP} ! LItem.Checked := not LItem.Checked; end; {$ENDIF VCL} *************** *** 2029,2032 **** --- 2039,2044 ---- Index, I: Integer; OwnColor: TColor; + + // (rom) Do as prefix for a local function is not ideal procedure DoDrawBackground(ACanvas: TCanvas; var R: TRect); begin *************** *** 2166,2174 **** Dec(ARect.Right, 3); {$IFDEF USEJVCL} ! DrawText(ACanvas, Caption, -1, ARect, DT_SINGLELINE or DT_LEFT or DT_VCENTER or ! DT_END_ELLIPSIS or DT_NOPREFIX); {$ELSE} ! DrawText(ACanvas.Handle, PChar(Caption), -1, ARect, DT_SINGLELINE or DT_LEFT or DT_VCENTER or ! DT_END_ELLIPSIS or DT_NOPREFIX); {$ENDIF USEJVCL} end; --- 2178,2186 ---- Dec(ARect.Right, 3); {$IFDEF USEJVCL} ! DrawText(ACanvas, Caption, -1, ARect, ! DT_SINGLELINE or DT_LEFT or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX); {$ELSE} ! DrawText(ACanvas.Handle, PChar(Caption), -1, ARect, ! DT_SINGLELINE or DT_LEFT or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX); {$ENDIF USEJVCL} end; *************** *** 2230,2234 **** begin Msg.Msg := WM_XPBARAFTEREXPAND; ! Msg.WParam := Integer(Self); Msg.Result := 0; Parent.Broadcast(Msg); --- 2242,2246 ---- begin Msg.Msg := WM_XPBARAFTEREXPAND; ! Msg.WParam := WPARAM(Self); Msg.Result := 0; Parent.Broadcast(Msg); *************** *** 2315,2319 **** if Result and Application.HintShortCuts and (TCustomAction(Action).ShortCut <> scNone) then if HintStr <> '' then ! HintStr := Format('%s (%s)', [HintStr, ShortCutToText(TCustomAction(Action).ShortCut)]); end; end; --- 2327,2331 ---- if Result and Application.HintShortCuts and (TCustomAction(Action).ShortCut <> scNone) then if HintStr <> '' then ! HintStr := Format(RsHintShortcutFmt, [HintStr, ShortCutToText(TCustomAction(Action).ShortCut)]); end; end; *************** *** 2395,2405 **** procedure TJvXPCustomWinXPBar.DblClick; var ! lItem: TJvXPBarItem; begin ! if (FHoverIndex <> -1) and (FVisibleItems[FHoverIndex] <> nil) and (FVisibleItems[FHoverIndex].Enabled) then begin ! lItem := FVisibleItems[FHoverIndex]; ! if Assigned(lItem.FOnDblClick) then ! lItem.FOnDblClick(lItem); end; inherited DblClick; --- 2407,2418 ---- procedure TJvXPCustomWinXPBar.DblClick; var ! LItem: TJvXPBarItem; begin ! if (FHoverIndex <> -1) and (FVisibleItems[FHoverIndex] <> nil) and ! FVisibleItems[FHoverIndex].Enabled then begin ! LItem := FVisibleItems[FHoverIndex]; ! if Assigned(LItem.FOnDblClick) then ! LItem.FOnDblClick(LItem); end; inherited DblClick; *************** *** 2448,2451 **** --- 2461,2465 ---- end; end; + procedure TJvXPCustomWinXPBar.SetOwnerDraw(const Value: Boolean); begin |