From 8f8177ebc0367ddf917e6ce8782e03378dcb1ca6 Mon Sep 17 00:00:00 2001 From: alexs75 Date: Thu, 2 Jul 2009 16:37:41 +0000 Subject: [PATCH] fix error in rxdbgrid git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@893 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/rx/docs/WhatsNew.eng.txt | 9 ++ components/rx/docs/WhatsNew.rus.txt | 3 +- components/rx/docs/laz_doc/rxfpc.xml | 32 +++++ components/rx/rxdbcomb.pas | 2 +- components/rx/rxdbgrid.pas | 168 ++++++++++++++------------- 5 files changed, 132 insertions(+), 82 deletions(-) create mode 100644 components/rx/docs/laz_doc/rxfpc.xml diff --git a/components/rx/docs/WhatsNew.eng.txt b/components/rx/docs/WhatsNew.eng.txt index c1569e74f..8bd2eaa13 100644 --- a/components/rx/docs/WhatsNew.eng.txt +++ b/components/rx/docs/WhatsNew.eng.txt @@ -10,6 +10,15 @@ + In TRxDateEdit add new property - ValidDate. Check valid input. + add 2 component from original RX: TRxSpinButton Ι TRxSpinEdit (Edward Ivanov) - fix images for TRxClock, TRxDateEdit, TAutoPanel (Edward Ivanov) + - fix error in TRxDatePicker (Edward Ivanov) + + Add new components: TRxDBSpinEdit, TRxTimeEdit, TRxDBTimeEdit + + TRxLoginDialo now work. + + Rewrite code for draw vertical text in titles RXDBGrid. Code from TAChart + + published BorderSpacing in TRxLabel + + add demo application for AutoSort in RxDBGrid + - fix sort order in TRxMemDataSet + - fix draw buttons in ToolPanel with use system themes + - fix error in TRxDBComboBox 22.05.2008 - version 2.0.0.136 (svn revision 100) + In TRxCustomDBLookupCombo add check for CircularDataLink + in TRxCustomDBLookupCombo accelerated drawing data diff --git a/components/rx/docs/WhatsNew.rus.txt b/components/rx/docs/WhatsNew.rus.txt index e426b1b02..4f7679844 100644 --- a/components/rx/docs/WhatsNew.rus.txt +++ b/components/rx/docs/WhatsNew.rus.txt @@ -15,13 +15,14 @@ + Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ TRxDBSpinEdit, TRxTimeEdit, TRxDBTimeEdit + TRxLoginDialo Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» сильно Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½. Π˜Π·ΠΌΠ΅Π½Ρ‘Π½ Π΄ΠΈΠ·Π°ΠΉΠ½ Ρ„ΠΎΡ€ΠΌΡ‹ - + Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° отриосвка Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² Π³Ρ€ΠΈΠ΄Π΅. Код ΠΈΠ· TAChart + + Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° отрисовка Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² Π³Ρ€ΠΈΠ΄Π΅. Код ΠΈΠ· TAChart + ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π° BorderSpacing Π² TRxLabel + Π”ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для использования автоматичСской сортировки Π² RxDBGrid - Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° сортировка ΠΏΡ€ΠΈ использовании TRxMemDataSet - Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° отрисова ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² ToolPanel ΠΏΡ€ΠΈ отрисовкС с использованиСм Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Π΅ΠΌΡ‹ + Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ объСдинСния ячССк Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (смотритС Π² Π΄Π΅ΠΌΠΊΠ΅ Π½Π° RxDBGrid) + - Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° ошибка установки значСния для TRxDBComboBox 22.05.2008 - вСрсия 2.0.0.136 (svn revision 100) + Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° TRxCustomDBLookupCombo Π²Π²Π΅Π΄Ρ‘Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π° CircularDataLink + Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° TRxCustomDBLookupCombo ускорСна отрисовка Π΄Π°Π½Π½Ρ‹Ρ… diff --git a/components/rx/docs/laz_doc/rxfpc.xml b/components/rx/docs/laz_doc/rxfpc.xml new file mode 100644 index 000000000..e1548a0bc --- /dev/null +++ b/components/rx/docs/laz_doc/rxfpc.xml @@ -0,0 +1,32 @@ + + + + + + + + Unit +RxCtrls +Description +ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TRxLabel Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Π° стандартной ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ VCL TLabel, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ позволяСт ΠΏΡ€ΠΈΠ΄Π°Ρ‚ΡŒ тСксту статичСского элСмСнта управлСния (Label) 3-ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Π²ΠΈΠ΄, Π»ΠΈΠ±ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ "Ρ‚Π΅Π½ΡŒ" тСкста. +Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойст ShadowPos, ShadowColor ΠΈ ShadowSize Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ располоТСниС, Ρ†Π²Π΅Ρ‚ ΠΈ Ρ‚ΠΎΠ»Ρ‰ΠΈΠ½Ρƒ "Ρ‚Π΅Π½ΠΈ" Π±ΡƒΠΊΠ² тСкста. ЗначСния, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ для этих свойств ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ "Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ" эффСкт изобраТСния тСкс + + + + + + + + + + + + + + + + + + + + diff --git a/components/rx/rxdbcomb.pas b/components/rx/rxdbcomb.pas index 2391dbb71..a866eb3ad 100644 --- a/components/rx/rxdbcomb.pas +++ b/components/rx/rxdbcomb.pas @@ -191,7 +191,6 @@ end; procedure TCustomDBComboBox.UpdateData(Sender: TObject); begin - FDataLink.Field.Text := ComboText; FDataLink.Field.AsString := ComboText; end; @@ -238,6 +237,7 @@ procedure TCustomDBComboBox.Change; begin FDataLink.Edit; inherited Change; + FDataLink.UpdateRecord; FDataLink.Modified; end; diff --git a/components/rx/rxdbgrid.pas b/components/rx/rxdbgrid.pas index 87862c9d4..c5528146b 100644 --- a/components/rx/rxdbgrid.pas +++ b/components/rx/rxdbgrid.pas @@ -867,95 +867,103 @@ var rxTit, rxTitleNext:TRxColumnTitle; MLRec1:TMLCaptionItem; MLRec2:TMLCaptionItem; + tmpCanvas: TCanvas; begin - H:=1; - ClearMLCaptionPointers; - for i:=0 to Columns.Count-1 do - begin - rxCol:=TRxColumn(Columns[i]); - if Assigned(rxCol) and rxCol.Visible then + if RowCount = 0 then exit; + tmpCanvas := GetWorkingCanvas(Canvas); + try + H:=1; + ClearMLCaptionPointers; + for i:=0 to Columns.Count-1 do begin - rxTit:=TRxColumnTitle(rxCol.Title); - if Assigned(rxTit) then + rxCol:=TRxColumn(Columns[i]); + if Assigned(rxCol) and rxCol.Visible then begin - if rxTit.Orientation in [toVertical270, toVertical90] then - H:=Max((Canvas.TextWidth(Columns[i].Title.Caption)+ Canvas.TextWidth('W')) div DefaultRowHeight, H) - else + rxTit:=TRxColumnTitle(rxCol.Title); + if Assigned(rxTit) then begin - rxColNext:=nil; - rxTitleNext:=nil; - if i < Columns.Count-1 then - begin - rxColNext:=TRxColumn(Columns[i+1]); - rxTitleNext:=TRxColumnTitle(rxColNext.Title); - end; - { TODO -oalexs : Π’ΡƒΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ скрытыС столбцы } - { - j:=i; - while j < Columns.Count-1 then - begin - if - inc(j); - end; - } - - W:=Max(rxCol.Width-2, 1); - if rxTit.CaptionLinesCount > 0 then - begin - H2:=0; - H1:=0; - for j:=0 to rxTit.CaptionLinesCount-1 do - begin - MLRec1:=rxTit.CaptionLine(j); - if Assigned(rxTitleNext) and (rxTitleNext.CaptionLinesCount>j) then - begin - MLRec2:=rxTitleNext.CaptionLine(j); - if MLRec1.Caption = MLRec2.Caption then - begin - MLRec1.Next:=MLRec2; - MLRec2.Prior:=MLRec1; - end; - end; - - MLRec1.Width:=Canvas.TextWidth(MLRec1.Caption)+2; - - if W > MLRec1.Width then - H2:=1 - else - H2:=MLRec1.Width div W + 1; - - if H2>WordCount(MLRec1.Caption, [' ']) then - H2:=WordCount(MLRec1.Caption, [' ']); - - H1:=H1+H2; - end - end + if rxTit.Orientation in [toVertical270, toVertical90] then + H:=Max((tmpCanvas.TextWidth(Columns[i].Title.Caption)+ tmpCanvas.TextWidth('W')) div DefaultRowHeight, H) else begin - H1:=Max((Canvas.TextWidth(rxTit.Caption)+2) div W + 1, H); - if H1>WordCount(rxTit.Caption, [' ']) then - H1:=WordCount(rxTit.Caption, [' ']); + rxColNext:=nil; + rxTitleNext:=nil; + if i < Columns.Count-1 then + begin + rxColNext:=TRxColumn(Columns[i+1]); + rxTitleNext:=TRxColumnTitle(rxColNext.Title); + end; + { TODO -oalexs : Π’ΡƒΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ скрытыС столбцы } + { + j:=i; + while j < Columns.Count-1 then + begin + if + inc(j); + end; + } + + W:=Max(rxCol.Width-2, 1); + if rxTit.CaptionLinesCount > 0 then + begin + H2:=0; + H1:=0; + for j:=0 to rxTit.CaptionLinesCount-1 do + begin + MLRec1:=rxTit.CaptionLine(j); + if Assigned(rxTitleNext) and (rxTitleNext.CaptionLinesCount>j) then + begin + MLRec2:=rxTitleNext.CaptionLine(j); + if MLRec1.Caption = MLRec2.Caption then + begin + MLRec1.Next:=MLRec2; + MLRec2.Prior:=MLRec1; + end; + end; + + MLRec1.Width:=tmpCanvas.TextWidth(MLRec1.Caption)+2; + + if W > MLRec1.Width then + H2:=1 + else + H2:=MLRec1.Width div W + 1; + + if H2>WordCount(MLRec1.Caption, [' ']) then + H2:=WordCount(MLRec1.Caption, [' ']); + + H1:=H1+H2; + end + end + else + begin + H1:=Max((tmpCanvas.TextWidth(rxTit.Caption)+2) div W + 1, H); + if H1>WordCount(rxTit.Caption, [' ']) then + H1:=WordCount(rxTit.Caption, [' ']); + end; + H:=Max(H1, H); end; - H:=Max(H1, H); - end; - for j:=0 to rxTit.CaptionLinesCount-1 do - begin - MLRec1:=rxTit.CaptionLine(j); - if MLRec1.Width < rxTit.Column.Width then - MLRec1.Width:=rxTit.Column.Width; - end; + for j:=0 to rxTit.CaptionLinesCount-1 do + begin + MLRec1:=rxTit.CaptionLine(j); + if MLRec1.Width < rxTit.Column.Width then + MLRec1.Width:=rxTit.Column.Width; + end; + end; end; end; - end; + RowHeights[0] := DefaultRowHeight * ({FTitleLines+}H); - RowHeights[0] := DefaultRowHeight * ({FTitleLines+}H); - - if rdgFilter in OptionsRx then - begin - RowHeights[0] := RowHeights[0] + DefaultRowHeight; + if rdgFilter in OptionsRx then + begin + RowHeights[0] := RowHeights[0] + DefaultRowHeight; + end; + + finally + if TmpCanvas<>Canvas then + FreeWorkingCanvas(tmpCanvas); end; end; @@ -1121,11 +1129,11 @@ begin BeginUpdate; try inherited CreateWnd; -// CalcTitle; + CalcTitle; finally EndUpdate; end; -end;} +end; } procedure TRxDBGrid.DefaultDrawCellA(aCol, aRow: Integer; aRect: TRect; aState: TGridDrawState); @@ -1906,8 +1914,8 @@ end; procedure TRxDBGrid.VisualChange; begin inherited VisualChange; - if Canvas.HandleAllocated then - CalcTitle; +// if Canvas.HandleAllocated then + CalcTitle; end; function TRxDBGrid.EditorByStyle(Style: TColumnButtonStyle): TWinControl;