fix error in rxdbgrid

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@893 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2009-07-02 16:37:41 +00:00
parent 60af6c3393
commit 8f8177ebc0
5 changed files with 132 additions and 82 deletions

View File

@ -10,6 +10,15 @@
+ In TRxDateEdit add new property - ValidDate. Check valid input. + In TRxDateEdit add new property - ValidDate. Check valid input.
+ add 2 component from original RX: TRxSpinButton � TRxSpinEdit (Edward Ivanov) + add 2 component from original RX: TRxSpinButton � TRxSpinEdit (Edward Ivanov)
- fix images for TRxClock, TRxDateEdit, TAutoPanel (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) 22.05.2008 - version 2.0.0.136 (svn revision 100)
+ In TRxCustomDBLookupCombo add check for CircularDataLink + In TRxCustomDBLookupCombo add check for CircularDataLink
+ in TRxCustomDBLookupCombo accelerated drawing data + in TRxCustomDBLookupCombo accelerated drawing data

View File

@ -15,13 +15,14 @@
+ Добавлены компоненты TRxDBSpinEdit, TRxTimeEdit, TRxDBTimeEdit + Добавлены компоненты TRxDBSpinEdit, TRxTimeEdit, TRxDBTimeEdit
+ TRxLoginDialo теперь работает. По сравнению с оригинальным функционал сильно расширен. + TRxLoginDialo теперь работает. По сравнению с оригинальным функционал сильно расширен.
Изменён дизайн формы Изменён дизайн формы
+ Улучшена отриосвка вертикальных заголовков в гриде. Код из TAChart + Улучшена отрисовка вертикальных заголовков в гриде. Код из TAChart
+ Опубликова BorderSpacing в TRxLabel + Опубликова BorderSpacing в TRxLabel
+ Добавлен пример для использования автоматической сортировки в RxDBGrid + Добавлен пример для использования автоматической сортировки в RxDBGrid
- Исправлена сортировка при использовании TRxMemDataSet - Исправлена сортировка при использовании TRxMemDataSet
- Исправлена отрисова кнопки в ToolPanel при отрисовке с использованием текущей темы - Исправлена отрисова кнопки в ToolPanel при отрисовке с использованием текущей темы
+ Реализована возможность объединения ячеек в заголовке таблицы + Реализована возможность объединения ячеек в заголовке таблицы
(смотрите в демке на RxDBGrid) (смотрите в демке на RxDBGrid)
- Исправлена ошибка установки значения для TRxDBComboBox
22.05.2008 - версия 2.0.0.136 (svn revision 100) 22.05.2008 - версия 2.0.0.136 (svn revision 100)
+ У объекта TRxCustomDBLookupCombo введён контроль на CircularDataLink + У объекта TRxCustomDBLookupCombo введён контроль на CircularDataLink
+ У объекта TRxCustomDBLookupCombo ускорена отрисовка данных + У объекта TRxCustomDBLookupCombo ускорена отрисовка данных

View File

@ -0,0 +1,32 @@
<?xml version="1.0"?>
<fpdoc-descriptions>
<package name="dcl_rx_fpc"/>
<package name="rxfpc">
<module name="rxdbgrid"/>
<module name="rxctrls">
<topic name="TRxLabel">
<descr>Unit
RxCtrls
Description
Компонента TRxLabel аналогична стандартной компоненте VCL TLabel, однако дополнительно позволяет придать тексту статического элемента управления (Label) 3-мерный вид, либо отобразить "тень" текста.
С помощью свойст ShadowPos, ShadowColor и ShadowSize вы можете задать расположение, цвет и толщину "тени" букв текста. Значения, заданные для этих свойств по умолчанию, создают "трехмерный" эффект изображения текс</descr>
</topic>
<element name="Align"/>
<element name="Alignment"/>
<element name="Alignment"/>
<element name="Alignment"/>
<element name="Color"/>
<element name="DragCursor"/>
<element name="DragMode"/>
<element name="Enabled"/>
<element name="TRxLabelENodeName"/>
<element name="Constraints"/>
<topic name="Constraints">
<element name="TRxLabelENodeNameENodeName"/>
</topic>
<element name="TRxLabelENodeNameENodeName">
<element name="TRxLabelENodeNameENodeNameENodeName"/>
</element>
</module>
</package>
</fpdoc-descriptions>

View File

@ -191,7 +191,6 @@ end;
procedure TCustomDBComboBox.UpdateData(Sender: TObject); procedure TCustomDBComboBox.UpdateData(Sender: TObject);
begin begin
FDataLink.Field.Text := ComboText;
FDataLink.Field.AsString := ComboText; FDataLink.Field.AsString := ComboText;
end; end;
@ -238,6 +237,7 @@ procedure TCustomDBComboBox.Change;
begin begin
FDataLink.Edit; FDataLink.Edit;
inherited Change; inherited Change;
FDataLink.UpdateRecord;
FDataLink.Modified; FDataLink.Modified;
end; end;

View File

@ -867,95 +867,103 @@ var
rxTit, rxTitleNext:TRxColumnTitle; rxTit, rxTitleNext:TRxColumnTitle;
MLRec1:TMLCaptionItem; MLRec1:TMLCaptionItem;
MLRec2:TMLCaptionItem; MLRec2:TMLCaptionItem;
tmpCanvas: TCanvas;
begin begin
H:=1; if RowCount = 0 then exit;
ClearMLCaptionPointers; tmpCanvas := GetWorkingCanvas(Canvas);
for i:=0 to Columns.Count-1 do try
begin H:=1;
rxCol:=TRxColumn(Columns[i]); ClearMLCaptionPointers;
if Assigned(rxCol) and rxCol.Visible then for i:=0 to Columns.Count-1 do
begin begin
rxTit:=TRxColumnTitle(rxCol.Title); rxCol:=TRxColumn(Columns[i]);
if Assigned(rxTit) then if Assigned(rxCol) and rxCol.Visible then
begin begin
if rxTit.Orientation in [toVertical270, toVertical90] then rxTit:=TRxColumnTitle(rxCol.Title);
H:=Max((Canvas.TextWidth(Columns[i].Title.Caption)+ Canvas.TextWidth('W')) div DefaultRowHeight, H) if Assigned(rxTit) then
else
begin begin
rxColNext:=nil; if rxTit.Orientation in [toVertical270, toVertical90] then
rxTitleNext:=nil; H:=Max((tmpCanvas.TextWidth(Columns[i].Title.Caption)+ tmpCanvas.TextWidth('W')) div DefaultRowHeight, H)
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
else else
begin begin
H1:=Max((Canvas.TextWidth(rxTit.Caption)+2) div W + 1, H); rxColNext:=nil;
if H1>WordCount(rxTit.Caption, [' ']) then rxTitleNext:=nil;
H1:=WordCount(rxTit.Caption, [' ']); 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; end;
H:=Max(H1, H);
end;
for j:=0 to rxTit.CaptionLinesCount-1 do for j:=0 to rxTit.CaptionLinesCount-1 do
begin begin
MLRec1:=rxTit.CaptionLine(j); MLRec1:=rxTit.CaptionLine(j);
if MLRec1.Width < rxTit.Column.Width then if MLRec1.Width < rxTit.Column.Width then
MLRec1.Width:=rxTit.Column.Width; MLRec1.Width:=rxTit.Column.Width;
end; end;
end;
end; end;
end; end;
end;
RowHeights[0] := DefaultRowHeight * ({FTitleLines+}H);
RowHeights[0] := DefaultRowHeight * ({FTitleLines+}H); if rdgFilter in OptionsRx then
begin
if rdgFilter in OptionsRx then RowHeights[0] := RowHeights[0] + DefaultRowHeight;
begin end;
RowHeights[0] := RowHeights[0] + DefaultRowHeight;
finally
if TmpCanvas<>Canvas then
FreeWorkingCanvas(tmpCanvas);
end; end;
end; end;
@ -1121,11 +1129,11 @@ begin
BeginUpdate; BeginUpdate;
try try
inherited CreateWnd; inherited CreateWnd;
// CalcTitle; CalcTitle;
finally finally
EndUpdate; EndUpdate;
end; end;
end;} end; }
procedure TRxDBGrid.DefaultDrawCellA(aCol, aRow: Integer; aRect: TRect; procedure TRxDBGrid.DefaultDrawCellA(aCol, aRow: Integer; aRect: TRect;
aState: TGridDrawState); aState: TGridDrawState);
@ -1906,8 +1914,8 @@ end;
procedure TRxDBGrid.VisualChange; procedure TRxDBGrid.VisualChange;
begin begin
inherited VisualChange; inherited VisualChange;
if Canvas.HandleAllocated then // if Canvas.HandleAllocated then
CalcTitle; CalcTitle;
end; end;
function TRxDBGrid.EditorByStyle(Style: TColumnButtonStyle): TWinControl; function TRxDBGrid.EditorByStyle(Style: TColumnButtonStyle): TWinControl;