You've already forked lazarus-ccr
RxFPC: Rename TDBDateEdit to TRxDBDateEdit. Warning - this version of RxFPC ONLY for Lazarus 1.3 and later
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3869 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -41,12 +41,8 @@ uses
|
|||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TDBDateEdit }
|
{ TRxDBDateEdit }
|
||||||
{$IFDEF DBDateEdit_OLD}
|
TRxDBDateEdit = class(TRxDateEdit)
|
||||||
TDBDateEdit = class(TDateEdit)
|
|
||||||
{$ELSE}
|
|
||||||
TDBDateEdit = class(TRxDateEdit)
|
|
||||||
{$ENDIF}
|
|
||||||
private
|
private
|
||||||
FDataLink:TFieldDataLink;
|
FDataLink:TFieldDataLink;
|
||||||
FDefaultToday: Boolean;
|
FDefaultToday: Boolean;
|
||||||
@ -66,13 +62,8 @@ type
|
|||||||
procedure LMCut(var Message: TLMessage); message LM_CUT;
|
procedure LMCut(var Message: TLMessage); message LM_CUT;
|
||||||
procedure LMPaste(var Message: TLMessage); message LM_PASTE;
|
procedure LMPaste(var Message: TLMessage); message LM_PASTE;
|
||||||
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
procedure Change; override;
|
|
||||||
procedure DoButtonClick (Sender: TObject); override;
|
|
||||||
{$ELSE}
|
|
||||||
procedure ButtonClick; override;
|
procedure ButtonClick; override;
|
||||||
procedure EditChange; override;
|
procedure EditChange; override;
|
||||||
{$ENDIF}
|
|
||||||
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
||||||
procedure EditingDone; override;
|
procedure EditingDone; override;
|
||||||
Procedure RunDialog; virtual;
|
Procedure RunDialog; virtual;
|
||||||
@ -109,11 +100,7 @@ type
|
|||||||
procedure LMCut(var Message: TLMessage); message LM_CUT;
|
procedure LMCut(var Message: TLMessage); message LM_CUT;
|
||||||
procedure LMPaste(var Message: TLMessage); message LM_PASTE;
|
procedure LMPaste(var Message: TLMessage); message LM_PASTE;
|
||||||
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
procedure Change; override;
|
|
||||||
{$ELSE}
|
|
||||||
procedure EditChange; override;
|
procedure EditChange; override;
|
||||||
{$ENDIF}
|
|
||||||
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
||||||
procedure EditingDone; override;
|
procedure EditingDone; override;
|
||||||
Procedure RunDialog; override;
|
Procedure RunDialog; override;
|
||||||
@ -129,29 +116,29 @@ type
|
|||||||
implementation
|
implementation
|
||||||
uses DateUtil;
|
uses DateUtil;
|
||||||
|
|
||||||
{ TDBDateEdit }
|
{ TRxDBDateEdit }
|
||||||
|
|
||||||
procedure TDBDateEdit.DoCheckEnable;
|
procedure TRxDBDateEdit.DoCheckEnable;
|
||||||
begin
|
begin
|
||||||
Enabled:=FDataLink.Active and (FDataLink.Field<>nil) and (not FDataLink.Field.ReadOnly);
|
Enabled:=FDataLink.Active and (FDataLink.Field<>nil) and (not FDataLink.Field.ReadOnly);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TDBDateEdit.GetDataField: string;
|
function TRxDBDateEdit.GetDataField: string;
|
||||||
begin
|
begin
|
||||||
Result:=FDataLink.FieldName;
|
Result:=FDataLink.FieldName;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TDBDateEdit.GetDataSource: TDataSource;
|
function TRxDBDateEdit.GetDataSource: TDataSource;
|
||||||
begin
|
begin
|
||||||
Result:=FDataLink.DataSource;
|
Result:=FDataLink.DataSource;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TDBDateEdit.GetReadOnly: Boolean;
|
function TRxDBDateEdit.GetReadOnly: Boolean;
|
||||||
begin
|
begin
|
||||||
Result:=FDataLink.ReadOnly;
|
Result:=FDataLink.ReadOnly;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.SetDataField(const AValue: string);
|
procedure TRxDBDateEdit.SetDataField(const AValue: string);
|
||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
FDataLink.FieldName:=AValue;
|
FDataLink.FieldName:=AValue;
|
||||||
@ -160,19 +147,19 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.SetDataSource(const AValue: TDataSource);
|
procedure TRxDBDateEdit.SetDataSource(const AValue: TDataSource);
|
||||||
begin
|
begin
|
||||||
FDataLink.DataSource:=AValue;
|
FDataLink.DataSource:=AValue;
|
||||||
DoCheckEnable;
|
DoCheckEnable;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.SetReadOnly(const AValue: Boolean);
|
procedure TRxDBDateEdit.SetReadOnly(const AValue: Boolean);
|
||||||
begin
|
begin
|
||||||
inherited ReadOnly:=AValue;
|
inherited ReadOnly:=AValue;
|
||||||
FDataLink.ReadOnly:=AValue;
|
FDataLink.ReadOnly:=AValue;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.CMExit(var Message: TLMessage);
|
procedure TRxDBDateEdit.CMExit(var Message: TLMessage);
|
||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
FDataLink.UpdateRecord;
|
FDataLink.UpdateRecord;
|
||||||
@ -184,19 +171,19 @@ begin
|
|||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.LMCut(var Message: TLMessage);
|
procedure TRxDBDateEdit.LMCut(var Message: TLMessage);
|
||||||
begin
|
begin
|
||||||
FDataLink.Edit;
|
FDataLink.Edit;
|
||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.LMPaste(var Message: TLMessage);
|
procedure TRxDBDateEdit.LMPaste(var Message: TLMessage);
|
||||||
begin
|
begin
|
||||||
FDataLink.Edit;
|
FDataLink.Edit;
|
||||||
inherited;
|
inherited;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.KeyDown(var Key: Word; Shift: TShiftState);
|
procedure TRxDBDateEdit.KeyDown(var Key: Word; Shift: TShiftState);
|
||||||
begin
|
begin
|
||||||
inherited KeyDown(Key, Shift);
|
inherited KeyDown(Key, Shift);
|
||||||
if Key=VK_ESCAPE then
|
if Key=VK_ESCAPE then
|
||||||
@ -216,22 +203,14 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
procedure TRxDBDateEdit.EditChange;
|
||||||
procedure TDBDateEdit.Change;
|
|
||||||
{$ELSE}
|
|
||||||
procedure TDBDateEdit.EditChange;
|
|
||||||
{$ENDIF}
|
|
||||||
begin
|
begin
|
||||||
if Assigned(FDataLink) then
|
if Assigned(FDataLink) then
|
||||||
FDataLink.Modified;
|
FDataLink.Modified;
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
inherited Change;
|
|
||||||
{$ELSE}
|
|
||||||
inherited EditChange;
|
inherited EditChange;
|
||||||
{$ENDIF}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.Notification(AComponent: TComponent; Operation: TOperation
|
procedure TRxDBDateEdit.Notification(AComponent: TComponent; Operation: TOperation
|
||||||
);
|
);
|
||||||
begin
|
begin
|
||||||
inherited Notification(AComponent, Operation);
|
inherited Notification(AComponent, Operation);
|
||||||
@ -245,39 +224,31 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.EditingDone;
|
procedure TRxDBDateEdit.EditingDone;
|
||||||
begin
|
begin
|
||||||
inherited EditingDone;
|
inherited EditingDone;
|
||||||
if FDataLink.CanModify then
|
if FDataLink.CanModify then
|
||||||
FDataLink.UpdateRecord;
|
FDataLink.UpdateRecord;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.RunDialog;
|
procedure TRxDBDateEdit.RunDialog;
|
||||||
begin
|
begin
|
||||||
if FDataLink.CanModify then
|
if FDataLink.CanModify then
|
||||||
FDataLink.UpdateRecord;
|
FDataLink.UpdateRecord;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
procedure TRxDBDateEdit.ButtonClick;
|
||||||
procedure TDBDateEdit.DoButtonClick(Sender: TObject);
|
|
||||||
{$ELSE}
|
|
||||||
procedure TDBDateEdit.ButtonClick;
|
|
||||||
{$ENDIF}
|
|
||||||
begin
|
begin
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
inherited DoButtonClick(Sender);
|
|
||||||
{$ELSE}
|
|
||||||
inherited ButtonClick;
|
inherited ButtonClick;
|
||||||
{$ENDIF}
|
|
||||||
RunDialog;
|
RunDialog;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.ActiveChange(Sender: TObject);
|
procedure TRxDBDateEdit.ActiveChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
DoCheckEnable;
|
DoCheckEnable;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.DataChange(Sender: TObject);
|
procedure TRxDBDateEdit.DataChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if Assigned(FDataLink.Field) and
|
if Assigned(FDataLink.Field) and
|
||||||
(FDataLink.Field is TDateTimeField) then
|
(FDataLink.Field is TDateTimeField) then
|
||||||
@ -290,7 +261,7 @@ begin
|
|||||||
else Text:='';
|
else Text:='';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.EditingChange(Sender: TObject);
|
procedure TRxDBDateEdit.EditingChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
inherited ReadOnly := not FDataLink.Editing;
|
inherited ReadOnly := not FDataLink.Editing;
|
||||||
if FDataLink.Editing and DefaultToday and (FDataLink.Field <> nil) and
|
if FDataLink.Editing and DefaultToday and (FDataLink.Field <> nil) and
|
||||||
@ -298,7 +269,7 @@ begin
|
|||||||
FDataLink.Field.AsDateTime := SysUtils.Now;
|
FDataLink.Field.AsDateTime := SysUtils.Now;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TDBDateEdit.UpdateData(Sender: TObject);
|
procedure TRxDBDateEdit.UpdateData(Sender: TObject);
|
||||||
var
|
var
|
||||||
D: TDateTime;
|
D: TDateTime;
|
||||||
begin
|
begin
|
||||||
@ -312,7 +283,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TDBDateEdit.Create(AOwner: TComponent);
|
constructor TRxDBDateEdit.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
FDataLink:=TFieldDataLink.Create;
|
FDataLink:=TFieldDataLink.Create;
|
||||||
@ -324,7 +295,7 @@ begin
|
|||||||
//UpdateMask;
|
//UpdateMask;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TDBDateEdit.Destroy;
|
destructor TRxDBDateEdit.Destroy;
|
||||||
begin
|
begin
|
||||||
FreeAndNil(FDataLink);
|
FreeAndNil(FDataLink);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
@ -454,18 +425,10 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
procedure TRxDBCalcEdit.Change;
|
|
||||||
{$ELSE}
|
|
||||||
procedure TRxDBCalcEdit.EditChange;
|
procedure TRxDBCalcEdit.EditChange;
|
||||||
{$ENDIF}
|
|
||||||
begin
|
begin
|
||||||
FDataLink.Modified;
|
FDataLink.Modified;
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
inherited Change;
|
|
||||||
{$ELSE}
|
|
||||||
inherited EditChange;
|
inherited EditChange;
|
||||||
{$ENDIF}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TRxDBCalcEdit.Notification(AComponent: TComponent;
|
procedure TRxDBCalcEdit.Notification(AComponent: TComponent;
|
||||||
|
@ -1,88 +1,7 @@
|
|||||||
+ Keys PgUp/PgDn correctly go through previous/next month in TRxCalendarGrid and TRxDateEdit
|
+ rename TDBDateEdit to TRxDBDateEdit.
|
||||||
+ if try edit closed TRxMemoryData in error message display TRxMemoryData.Name
|
!!!!Warning - this version of RxFPC ONLY for Lazarus 1.3 and later
|
||||||
+ fix create resource from XPM image
|
06.01.2015 - version 2.2 for Lazarus 1.2
|
||||||
+ draw shadow on button image in TToolPanel
|
- create version in folder "version/v2.2_laz_1.2"
|
||||||
- Fix error in TDBComboBox.EditingDone if DataSet = nil
|
|
||||||
- new code for align button on TToolPanel
|
|
||||||
+ property OnUTF8KeyPress now published
|
|
||||||
+ New value for ToolPanel.ToolBarStyle - tbsNative - for draw buttons used standart theme from OS
|
|
||||||
+ fix options dialog for TToolPanel
|
|
||||||
+ 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
|
|
||||||
+ New mode - Quick search data in grid (code from Aleksey Kozlov with minor fix)
|
|
||||||
- fix error in sort data for Postgres (grigoreo)
|
|
||||||
|
|
||||||
22.05.2008 - version 2.0.0.136 (svn revision 100)
|
|
||||||
+ In TRxCustomDBLookupCombo add check for CircularDataLink
|
|
||||||
+ in TRxCustomDBLookupCombo accelerated drawing data
|
|
||||||
- In TRxCustomDBLookupCombo fix select first record if DataField is emty
|
|
||||||
+ In RxDBGrid are published missing events from DBGrid
|
|
||||||
+ New component TRxCalendarGrid - simple calendar without heading.
|
|
||||||
- fix error compile module rxappicon.pas in Windows for GTK2 (thx ViruZ)
|
|
||||||
+ add new module rxiconv.pas (original module iconv.pas from A.Voito)
|
|
||||||
+ minor fix in drawing button caption in setup form TToolbar
|
|
||||||
+ fix draw disables state for TRxCustomDBLookupCombo
|
|
||||||
- fix compile rxctrls in fpc 2.2
|
|
||||||
+ TPopUpColumnTitle used define NEW_STYLE_TITLE_ALIGNMENT_RXDBGRID
|
|
||||||
+ in RxDBGrid images of markers moved to rxdbgrids.lrs (Petr Smolik)
|
|
||||||
+ add module for autosort in RxDBGrid exsortzeos.pas for ZeosDB (Petr Smolik)
|
|
||||||
- In TCurrencyEdit property BorderSpacing now published
|
|
||||||
+ New procedure StrToStrings in module rxstrutils - fill List:TStrings
|
|
||||||
procedure StrToStrings(const S:string; const List:TStrings; const Delims:Char);
|
|
||||||
+ New editor for TField object with Lookup source in TRxDBGrid - base on class TRxDBLookupCombo
|
|
||||||
+ In TRxDBLookupCombo work property AutoSize
|
|
||||||
+ After change property Font in TRxDBLookupCombo dropdown list used this font
|
|
||||||
+ In RxDBGrid create lookup editor for TField
|
|
||||||
- Fix error in TRxLookupEdit
|
|
||||||
+ In RxDBGrid published new property from DBGrid
|
|
||||||
+ Cosmetic fix in paint TRxCustomDBLookupCombo
|
|
||||||
+ Dropdown list in TRxCustomDBLookupCombo show after clikc on component
|
|
||||||
+ minor fix in RxDBGrid paint sort marker and column title
|
|
||||||
+ New component - TRxDateEdit
|
|
||||||
+ In RxDBGrid create editor for field with type ftDate, ftDateTime - based on TRxDateEdit
|
|
||||||
(see Demos/RxDBGrid)
|
|
||||||
- minor fix in filter combobox in RxDBGrid for GTK and GTK2
|
|
||||||
+ TRxSpeedButton and TRxClock
|
|
||||||
+ new procedure in module dbutils - FillValueForField
|
|
||||||
+ editor for property TRxColumnFooter.FieldName
|
|
||||||
+ TDBDateEdit inherited from TRxDateEdit, for old style use DBDateEdit_OLD compiller directive
|
|
||||||
(see rx.inc).
|
|
||||||
+ In RxDBGrid property FixedHotColor now published
|
|
||||||
- fix error with empty sring in TRxDateEdit.
|
|
||||||
+ In property TRxDBLookupCombo.PopUpFormOptions add field AutoFillColumns. Used in dropdown list.
|
|
||||||
- Cleanup code in TRxDBLookupCombo.Paint
|
|
||||||
+ In TRxDBLookupCombo property DropDownCount now work
|
|
||||||
- fix error in TRxDBLookupCombo after set value for DataField and LookupSourse.Active=false
|
|
||||||
+ In PopUpFormOptions add editor for property Collumns[x].FieldName
|
|
||||||
29.08.2007 - version 1.1.5.98 (svn revision 39)
|
|
||||||
+ In RxDBgrid - after close dataset list of SelectedRows is cleared
|
|
||||||
+ fix resaizing find form for RxDbGrd
|
|
||||||
+ compile in latest Lazarus
|
|
||||||
+ in TToolbarButton stile tbrSeparator and tbrDivider as Delphi
|
|
||||||
tbrSeparator - separator with line
|
|
||||||
tbrDivider - empty separator
|
|
||||||
+ in TToolbarButton new style tbrDropDownExtra - button with dropdown menu.
|
|
||||||
12.08.2007 - version 1.1.4.93
|
|
||||||
+ in TRxDBComboBox publishe any property
|
|
||||||
+ in TRxDBLookupCombo add event OnGetGridCellProps
|
|
||||||
+ in rx.inc new define
|
|
||||||
RXDBGRID_OPTIONS_WO_CANCEL_ON_EXIT
|
|
||||||
- in RxDBGrid fix error lose focuse after close filte list
|
|
||||||
+ in demo for RxDBGrid add demos �for visual filtring data
|
|
||||||
+ add new component - TAutoPanel ( Dmitry V. Bolshakov) -
|
|
||||||
doc ifn folder auto_panel_doc
|
|
||||||
+ in property OptionsRX add new flag - rdgMrOkOnDblClik
|
|
||||||
|
|
||||||
|
|
||||||
Lagunov Aleksey (alexs)
|
Lagunov Aleksey (alexs)
|
||||||
ALEXS75-at-YANDEX-dot-RU
|
ALEXS75-at-YANDEX-dot-RU
|
||||||
|
@ -1,443 +1,8 @@
|
|||||||
+ Клавиши PgUp/PgDn корректно пролистывают предыдущий/следующий месяц в TRxCalendarGrid и TRxDateEdit
|
+ компонент TDBDateEdit переименован в TRxDBDateEdit. Необходимо для того, чтобы избежать конфликта имён со штатным комопонентом Lazarus-а.
|
||||||
+ При попытке редактирования закрытого набора данных TRxMemoryData в сообщении об ошибке выдаётся наименование набора данных
|
!!!!ВНИМАНИЕ - эта версия RxFPC ТОЛЬКО ДЛЯ Lazarus 1.3 и более поздних
|
||||||
+ Исправлено создание ресурсов из XPM файлов
|
06.01.2015 - Версия 2.2 для Lazarus 1.2
|
||||||
+ Доработана отрисовка тени у кнопки на TToolPanel
|
- создана версия в папке "version/v2.2_laz_1.2"
|
||||||
- Исправлена ошибка в TDBComboBox.EditingDone; если не присвоен DataSet
|
|
||||||
- Переработан код выравнивания кнопок на TToolPanel
|
|
||||||
+ Опубликовано свойство OnUTF8KeyPress;
|
|
||||||
+ Свойство ToolPanel.ToolBarStyle теперь может принимать значение tbsNative - для отрисовки кнопок используется
|
|
||||||
текущая тема
|
|
||||||
+ Доработано окно настройки панели инструментов
|
|
||||||
+ У компоненты TRxDateEdit добавлено свойствой - ValidDate. Определяет коректность введённой даты.
|
|
||||||
+ Добавлена два исходных компонента: TRxSpinButton и TRxSpinEdit (автор порта - Edward Ivanov)
|
|
||||||
- исправлены глифы у TRxClock, TRxDateEdit, TAutoPanel (Edward Ivanov)
|
|
||||||
- Исправления в TRxDatePicker (Edward Ivanov)
|
|
||||||
+ Добавлены компоненты TRxDBSpinEdit, TRxTimeEdit, TRxDBTimeEdit
|
|
||||||
+ TRxLoginDialo теперь работает. По сравнению с оригинальным функционал сильно расширен.
|
|
||||||
Изменён дизайн формы
|
|
||||||
+ Улучшена отрисовка вертикальных заголовков в гриде. Код из TAChart
|
|
||||||
+ Опубликова BorderSpacing в TRxLabel
|
|
||||||
+ Добавлен пример для использования автоматической сортировки в RxDBGrid
|
|
||||||
- Исправлена сортировка при использовании TRxMemDataSet
|
|
||||||
- Исправлена отрисова кнопки в ToolPanel при отрисовке с использованием текущей темы
|
|
||||||
+ Реализована возможность объединения ячеек в заголовке таблицы
|
|
||||||
(смотрите в демке на RxDBGrid)
|
|
||||||
- Исправлена ошибка установки значения для TRxDBComboBox
|
|
||||||
+ Реализовн режим быстрого поиска (код от Алексея Козлова с небольшими доработками) - подробнее смотри пункт 6 в
|
|
||||||
файле readmy.txt
|
|
||||||
- Исправлена ошибка при работе сортировки с рускими полями под Postgres (grigoreo)
|
|
||||||
+ В опциях FBDataSet добавлен флаг poNotSetDefaultParams - не устанавливать форматы полей при открытии БД
|
|
||||||
- Исправлена ошибка переключения стиля RxDateEdit с диалога на popup
|
|
||||||
+ Улучшена отрисовка текста кнопки в ToolBar
|
|
||||||
+ Свойство TCustomRxDateEdit.YearDigits теперь работает
|
|
||||||
+ Большой патч от Rene Herranz Daniel (rhdaniel74.(at).gmail.com) - доработки по сортировке данных,
|
|
||||||
меню правого верхнего угла, фильтрация данных
|
|
||||||
+ Начато написание документации в формета LazDoc
|
|
||||||
- Исправлено изменение цвета конца недели в RxDateEdit
|
|
||||||
+ Добавлена демка для RxDBLookup
|
|
||||||
+ У объекта TRxDBLookupCombo опубликовано свойство Text - установка значения для него вызывает поиск по лукап-листу
|
|
||||||
+ Локальная фильтрация в RxDBGrid-е использует значения Field.DisplayText, а не Field.AsString
|
|
||||||
+ В форме настроек колонок RxDBGrid работает перемещение столбцов
|
|
||||||
+ При сохранении состояния RxDBGrid сохраняется также положение столбцов
|
|
||||||
- Исправлена ошибка в RxDBGrid при сохранении состояния Visible колонок
|
|
||||||
+ В RxDBGrid в функции поиска колонки по её наименованию TRxDBGrid.ColumnByCaption
|
|
||||||
не учитывается регистр символов
|
|
||||||
+ В RxDBGrid сохраняется между сеансами порядок сортировки
|
|
||||||
+ В RxDBGrid при автоматическом подборе ширины колонки учитывается ширина заголовка
|
|
||||||
+ модуль
|
|
||||||
+ В объекте TRxMemoryData переключил фильтрацию на стандартный механизм из модуля DB - раньше был код
|
|
||||||
для обхода ошибок. В дальнейшем событие OnFilterRecordEx будет полностью исключено из компонента
|
|
||||||
+ Новый модуль rxFileUtils - набор дополнительных функций для работы с файлами:
|
|
||||||
GetFileOwnerUser - возвращает имя пользователя-владельца файла (пока только windows)
|
|
||||||
GetFileOwnerData - возвращает информацию о владельце файла (пока только windows)
|
|
||||||
NormalizeDirectoryName - приводит все разделитили каталогов в имени файла к тому виду, как принятов данной ОС.
|
|
||||||
+ У TRxColumnFooter доступно свойство NumericValue - содержит числовое представление значения
|
|
||||||
итогов по столбцу. Имеет смысл только для ValueType = fvtSum, fvtAvg, fvtMax, fvtMin
|
|
||||||
+ Новая компонента TRxVersionInfo - обёртка над вызовами функция чтения ресурсов файла
|
|
||||||
- Исправлено рисование изображение в колонках RxDBGrid-а если выключен индикатор или заголовок
|
|
||||||
- Исправлено рисование колонок с объединёнными заголовками
|
|
||||||
- Введдена обработка ситуации востановления состояния RxDBGrid-а, если количество колонок во время востановления меньше,
|
|
||||||
чем было в момент сохранения
|
|
||||||
+ Новая компонента TRxAboutDialog - окно для отображения информации о программе (пример смотреть в демке по RxDBGrid-у)
|
|
||||||
+ Добавлена поддержка компиляции под WinCE
|
|
||||||
- Исправлена ошибка автоподбора ширины колонки при двойном щелчке по заголвку колонки
|
|
||||||
+ При подсчёте итоговой строки не вызываются лишние просчёты по данным (если нет агрегатных функций)
|
|
||||||
+ Для RXDbGrid-а реализована система назначения функциональных клавиш на вызов функций (сортировка, фильтрация и т.д.)
|
|
||||||
добавлено новое свойство KeyStrokes
|
|
||||||
+ Добавлен новый компонент RxCurredit
|
|
||||||
+ Добавлен новый компонент- TRxViewsPanel
|
|
||||||
+ у компоненты TRxMemoryData убрана зависимость от модуля Forms
|
|
||||||
+ Улучшено отображение редактора полей типа TDateTime/TDate в RxDBGrid
|
|
||||||
+ У TRxCollumn компоненты TRxDBGrid для стиля cbsPickList добавлено свойство DirectInput.
|
|
||||||
Если оно установлено в false - значения поля можно выбрать только из выпадающего списка
|
|
||||||
+ Добавлены 2 комопненты - TRxRadioGroup и TRxDBRadioGroup. В отличии от стнадартных позволяют выборочно запрещать некоторые RadioButton-ы на
|
|
||||||
компоненте через свойство ItemEnabled.
|
|
||||||
|
|
||||||
+ Новая компонента - TRxCloseFormValidator. Предназначена для размещения на диалоговых модальных окнах, при закрытии такого окна
|
|
||||||
проверяет на обязательную заполненность списка полей ввода, перечисленных в свойстве Items.
|
|
||||||
+ В модуле rxStrUtils большая часть функция помечена как устаревшая - они дублируют функционал из модуля StrUtils. В дальнешем они
|
|
||||||
будут удалены в целях уменьшения кол-ва кода.
|
|
||||||
+ У RxDBGrid-а при вводе даты подставляется маска ввода
|
|
||||||
22.05.2008 - версия 2.0.0.136 (svn revision 100)
|
|
||||||
+ У объекта TRxCustomDBLookupCombo введён контроль на CircularDataLink
|
|
||||||
+ У объекта TRxCustomDBLookupCombo ускорена отрисовка данных
|
|
||||||
- У объекта TRxCustomDBLookupCombo исправлен выбор первой записи из справочника при
|
|
||||||
пустом значени в DataField
|
|
||||||
+ В RxDBGrid опубликованы недостающие обработчики из DBGrid
|
|
||||||
+ Реализован новый компонент TRxCalendarGrid - простой календарь без заголовка.
|
|
||||||
- Исправлена ошибка компиляции модуля rxappicon.pas под Windows при использовании
|
|
||||||
интерфейса GTK2 (спасибо ViruZ - Вадим Витомский)
|
|
||||||
+ Добавлен модуль rxiconv.pas (оригинальный модуль iconv.pas от A.Voito)
|
|
||||||
+ Небольшое улучшение отрисовки заголовка кнопки в форме настройки TToolbar
|
|
||||||
+ Исправлена отрисовка запрещённого состояния у TRxCustomDBLookupCombo
|
|
||||||
- Исправлена компиляция модуля rxctrls в fpc 2.2
|
|
||||||
+ В TPopUpColumnTitle введена поддержка дерективы
|
|
||||||
NEW_STYLE_TITLE_ALIGNMENT_RXDBGRID
|
|
||||||
+ В RxDBGrid изображения маркеров вынесены в ресурсы (Petr Smolik)
|
|
||||||
+ Добавлен модуль автоматической сортировки в RxDBGrid exsortzeos.pas для ZeosDB (Petr Smolik)
|
|
||||||
- В TCurrencyEdit опубликовано свойство BorderSpacing
|
|
||||||
+ В модуль rxstrutils добавлена процедура StrToStrings - заполняет класс TStrings строками
|
|
||||||
содержащимися в строке S и разделёнными симовлом Delims
|
|
||||||
+ Реализован редактор свойств для полей LookupField и LookupDisplay у компонент
|
|
||||||
TRxLookupEdit и TRxDBLookupCombo
|
|
||||||
+ TRxDBLookupCombo реализована поддержка свойства AutoSize
|
|
||||||
+ При установке свойства Font у TRxDBLookupCombo выпадающий список использует этот же шрифт
|
|
||||||
+ Если у объекта TField установленый лукапные источники то при редактировании в RxDBGrid
|
|
||||||
такого поля вызывается редактор на основе TRxDBLookupCombo
|
|
||||||
- Исправлена ошибка в компоненте TRxLookupEdit - не правильно закрывался выпадающий список
|
|
||||||
+ В RxDBGrid опубликованны недостающие поля
|
|
||||||
+ Косметические изменения отрисовки TRxCustomDBLookupCombo
|
|
||||||
+ Выпадающий список в TRxCustomDBLookupCombo отображатеся просто по клику на компоненте
|
|
||||||
+ В RxDBGrid доработана отрисовка маркера сортировки и заголовка колонки
|
|
||||||
+ Перенесён и дописан компонент TRxDateEdit
|
|
||||||
+ В RxDBGrid реализован редактор для полей типа ftDate, ftDateTime на основае TRxDateEdit
|
|
||||||
(см. Demos/RxDBGrid)
|
|
||||||
+ Доработки фильтрации в RxDBGrid для GTK и GTK2
|
|
||||||
+ Перенесены компоненты TRxSpeedButton и TRxClock
|
|
||||||
+ новая функция в модуле dbutils - FillValueForField
|
|
||||||
+ Реализован редактор для RxColumnFooter.FieldName
|
|
||||||
+ TDBDateEdit теперь наследуется от TRxDateEdit, чтобы оставить как было необходимо
|
|
||||||
включить директиву DBDateEdit_OLD. Для работоспособности программ необходимо переоткрыть все формы
|
|
||||||
в дизайнере.
|
|
||||||
+ В RxDBGrid опубликованы недостающие поля
|
|
||||||
- Исправлена ошибка в обработке пустой даты в редакторе дат.
|
|
||||||
+ В свойстве PopUpFormOptions компоненты TRxDBLookupCombo добавлено поле AutoFillColumns - аналог одноимённого поля
|
|
||||||
из TDBGrid - используется в выпадающем списке
|
|
||||||
- Улучшен код в отрисовке компоненты TRxDBLookupCombo
|
|
||||||
+ В TRxDBLookupCombo работает свойство DropDownCount
|
|
||||||
- Исправлена ошибка TRxDBLookupCombo при LookupSourse.Active=false и установке значения для поля DataField
|
|
||||||
+ В свойстве PopUpFormOptions компоненты TRxDBLookupCombo для элемента из списка Collumns добавлен редктор на FieldName
|
|
||||||
|
|
||||||
29.08.2007 - версия 1.1.5.98 (svn revision 39)
|
|
||||||
+ В RxDBGrid После закрытия набора данных список помеченных строк (SelectedRows)
|
|
||||||
очищается
|
|
||||||
+ Улучшено масштабирование формы поиска по RxDbGrd
|
|
||||||
+ Компиляция в последнем Lazarus
|
|
||||||
+ TToolbarButton различает теперь стили tbrSeparator и tbrDivider
|
|
||||||
tbrSeparator - разделитьль с чертой
|
|
||||||
tbrDivider - пустой разделитель
|
|
||||||
+ TToolbarButton новый стиль tbrDropDownExtra - кнопка с выпадающим меню.
|
|
||||||
В отличии от tbrDropDown это работает как кнопка + если нажата крайня правая область - то
|
|
||||||
тогда появляется меню. (интерфейс ещё коряв - надо будет доработать в дальнейшем)
|
|
||||||
12.08.2007 - версия 1.1.4.93
|
|
||||||
+ В TRxDBComboBox опубликованы недостающие поля
|
|
||||||
+ В TRxDBLookupCombo добавлено обработчик OnGetGridCellProps
|
|
||||||
- позволяет задавать при отрисовке фон в выпадающем списке
|
|
||||||
+ В rx.inc ввёл новую дерективу компиляции
|
|
||||||
RXDBGRID_OPTIONS_WO_CANCEL_ON_EXIT
|
|
||||||
если она определени - то в свойстве TRxDbGrid.Options выключается флаг
|
|
||||||
dgCancelOnExit (см. пункт 5 из readmy.txt)
|
|
||||||
- В RxDBGrid исправлена ошибка потери фокуса после закрытия списка фильтра
|
|
||||||
+ В примере на RxDBGrid добавлен промер на визуальную фильтрацию данных
|
|
||||||
+ Добавлен компонент TAutoPanel (автор Dmitry V. Bolshakov) -
|
|
||||||
документация в папке auto_panel_doc
|
|
||||||
+ В свойстве OptionsRX добавлен новый флаг - rdgMrOkOnDblClik
|
|
||||||
при его установке при двойном нажатии на RxDbGrid форме, которой принадлежит
|
|
||||||
RxDbGrid присиваивается ModalResult:=mrOk;
|
|
||||||
25.06.2007 - версия 1.1.3.86
|
|
||||||
- Исправлена ошибка в методе TRxMemoryData.SortOnFields
|
|
||||||
+ Добавлена поддержка сортировок из RxDBGrid на TRxMemoryData
|
|
||||||
- достаточно просто подключить в проект модуль rxsortmemds
|
|
||||||
+ В RxDBGrid добавлен метод UpdateTitleHight - принудительный пересчёт высоты заголовок колонок
|
|
||||||
- В RxDBGrid испралено определение нажатия на последнйи столбец
|
|
||||||
+ В RxDBGrid в заголовке введена специальная обработка символа | - это
|
|
||||||
считается безусловный разделитель строк
|
|
||||||
+ В RxDBGrid.OptionsRx добавлен флаг rdgMultiTitleLines -
|
|
||||||
при наличии в заголовке символа | между строками рисуется разделительная
|
|
||||||
линия
|
|
||||||
+ В rx.inc ввёл новую дерективу компиляции
|
|
||||||
NEW_STYLE_TITLE_ALIGNMENT_RXDBGRID
|
|
||||||
если она определна, то при создании новых колонок в RxDBGrid заголовок центрируется,
|
|
||||||
если эта деректива не определена - то поведение заголовка стандартное - выравнивается
|
|
||||||
по левому краю
|
|
||||||
+ В TRxDBLookupCombo если в свойстве PopUpFormOptions заданы колонки то при отрисовке данных
|
|
||||||
в строке используется ширина, указанная в колонках
|
|
||||||
+ В TRxDBLookupCombo после закрытия списка запоминается ширина колонок, установленная
|
|
||||||
оператором
|
|
||||||
31.05.2007 - версия 1.1.2.77
|
|
||||||
- Исправлена компиляция модуля rxtoolbar.pas с последними версиями LCL
|
|
||||||
(после введения тем) - сам TToolPanel ещё не работает с темами
|
|
||||||
- Исправил компиляцию модуля rxlogin.pas - была ошибка на SetCursor
|
|
||||||
15.05.2007 - версия 1.1.1.75
|
|
||||||
+ В RxDBGrid добавлен метод OptimizeColumnsWidth(AColList:String) - подбирает
|
|
||||||
ширину колонки (колонок - перечисление через ";") по содержимому
|
|
||||||
+ В RxDBGrid добавлен метод OptimizeColumnsWidthAll - соотвественно производит автободбор
|
|
||||||
ширины для всех колонок
|
|
||||||
+ TRxColumn добавлен метод OptimizeWidth - подбор ширины указанной колонки
|
|
||||||
Для всех методов подбора ширины производится также выфетчивание всех записей
|
|
||||||
+ Опция rdgDblClickOptimizeColWidth в свойстве RxDBGrid.OptionsRx работает
|
|
||||||
- исправлен глюк расчёта высоты заголовка колонки для многострочного заголовка
|
|
||||||
- Исправлен глюк отерытия примера на RxDBGrid
|
|
||||||
+ В примере на RxDBGrid добавлен примера на оптимизацию ширины
|
|
||||||
28.03.2007 - версия 1.1.0.68
|
|
||||||
- В RxDBGrid исправлена отрисовка итоговой строки при изменении размера колонок
|
|
||||||
+ В RxDBGrid в свойстве OptionsRx добавлено состояние rdgXORColSizing
|
|
||||||
- при включённом прорисовка масштабирования колонки происходит линией
|
|
||||||
(контуром), окончательная прорисовка колонки происходит после окончания изменения
|
|
||||||
размера столбца - стандартное поведение в Delphi
|
|
||||||
- Изменён метод отрисовки итоговой строки (код от Yogrik)
|
|
||||||
+ Небольшие доработки с позиционированием кнопок в ToolBar-е
|
|
||||||
+ В TRxDBLookupCombo улучшена отрисовка выпадающего списка
|
|
||||||
+ В TRxColumnTitle добавлены свойства Hint и ShowHint - подсказка, всплывающая при
|
|
||||||
наведении курсора на заголовок колонки в TRxDBGrid
|
|
||||||
+ Реализована поддержка фильтрации днных в TRxDBGrid (код от Yogrik)
|
|
||||||
01.11.2006 - версия 1.0.19.61
|
|
||||||
+ В выпадающем списке компонента TRxDBLookupCombo реализован быстрый поиск
|
|
||||||
по столбцу, заданному свойством LookupDisplayIndex.
|
|
||||||
Из-за ограничений LCL поиск осуществляется пока только по вводу чисел
|
|
||||||
+ В RxDBGrid добавлено отображение строки итогов (Footer row), соответсвенно введены
|
|
||||||
необходимые свойства в колонках.
|
|
||||||
Внимание: из-за ошибок в TDataSet не работает коректно пока агрегатные функции
|
|
||||||
(SUM, MAX, MIN, AVG)
|
|
||||||
+ В TRxMemoryData реализовал свойство AppendRecord - пока не будет написано аналогичное
|
|
||||||
в TDataSet
|
|
||||||
+ Новый Демо - RxDBGrid - демонстрация возможностей RxDBGrid
|
|
||||||
- В RxDBGrid исправлен вызов OnDrawColumnCell
|
|
||||||
08.09.2006 - версия 1.0.18.56
|
|
||||||
+ У объекта TToolPanel ввёл параметр ButtonAllign = (tbaNone, tbaLeft, tbaRignt)
|
|
||||||
выравнивание по умолчанию кнопок, tbaNone - это старое поведение
|
|
||||||
+ У объекта TToolbarItem (кнопка панели инструментов) введена поддержка типа
|
|
||||||
tbrSeparator - разделитель между кнопками
|
|
||||||
+ При закрытии списка у TRxDBLookupCombo происходит перерисовка
|
|
||||||
владельца (parent) компонента - обхожу глюк LCL в Win32
|
|
||||||
19.08.2006 - версия 1.0.17.53
|
|
||||||
+ изменил по умолчанию рамку popup окна у TRxDBLookupCombo на стиль bsNone
|
|
||||||
(так привычнее)
|
|
||||||
+ Одиночный клик мышки в списке popup окна у TRxDBLookupCombo также закрывает
|
|
||||||
его
|
|
||||||
- исправлена поведении в обработке клавиши ESC у компоненты TRxDBLookupCombo -
|
|
||||||
если поле набора данных не пустое - то происходит установка поля в null и обнуление
|
|
||||||
сканкода клавишы, при пустом поле (повторное нажатие) - клавиша не брабатывается
|
|
||||||
+ У RxDBLookupCombo не срабатывало событие OnChange
|
|
||||||
15.05.2006 - версия 1.0.16.49
|
|
||||||
+ Полностью переписан выпадающий список для объекта TRxDBLookupCombo
|
|
||||||
+ У объекта TRxDBLookupCombo введено новое свойство PopUpFormOptions - в нём
|
|
||||||
собраны все параметры выпадающего списка
|
|
||||||
если заполнен список PopUpFormOptions.Columns то список отоборажаемых
|
|
||||||
полей в гриде берётся из этого свойства, иначе возьмётся строка
|
|
||||||
LookupDisplay - здесь перечисляется список полей через точку с запятой (";")
|
|
||||||
|
|
||||||
11.05.2006 - версия 1.0.15.47
|
|
||||||
+ В RxDBGrid добавлено свойство с дополнительными параметрами, работают пока два
|
|
||||||
отображение окна поиска в списке и окна выбора колонок к отображению
|
|
||||||
+ при включённой опции в свойстве OptionsRx нажатие сочетания клавш Ctrl+F
|
|
||||||
отображает окно поиска по списку
|
|
||||||
+ при включённой опции в свойстве OptionsRx нажатие сочетания клавш Ctrl+W
|
|
||||||
отображает окно выбора колонок
|
|
||||||
+ изменён случай вызлва для события TRxDbGrid.OnGetCellProps - для ячеки, которая
|
|
||||||
в данный момент сфокусирована - событие не вызвается
|
|
||||||
+ В TRxDBGrid добавлено свойство:
|
|
||||||
function TRxDBGrid.ColumnByFieldName(AFieldName: string): TRxColumn
|
|
||||||
возвращает указатель на требуемый столбец по имени поля набора данных
|
|
||||||
в случае отсутсвия данного столбца - вернёт nil
|
|
||||||
11.04.2006 - версия 1.0.14.41
|
|
||||||
- небольшое исправление в отображение CurrencyEdit
|
|
||||||
14.02.2006 - версия 1.0.13.40
|
|
||||||
- исправлена отрисовка RxDbGrid с не подключённым набором данных
|
|
||||||
- исправлена в RxDbGrid отрисовка заголовка колонки с набором полей по умолчанию
|
|
||||||
+ В TToolPanel добавлена поддержка выделенного списка изображений (Selected image list)
|
|
||||||
(при наличии в нём изображений кнопки рисуются из него при наведённых на него курсоре)
|
|
||||||
- исправлена ошибка сжатия колонки в RxDbGrid (деление на 0)
|
|
||||||
- Исправлена кустомизация TToolPanel во время выполнения еслине у всех Items
|
|
||||||
установлено свойство Action
|
|
||||||
12.01.2006 - версия 1.0.12.38
|
|
||||||
+ в RxDbGrid в заголовке колонки добавлено свойство Orientation - отвечает за
|
|
||||||
направление отрисовки текста в заголовке столбца
|
|
||||||
+ добавлена демка для демонстрацииотрисовки текста вертикально (под углом 90
|
|
||||||
градусов)
|
|
||||||
21.12.2005
|
|
||||||
+ в RxDbGrid добавлено свойство AllowedOperation - для запрета выплнения некоторых
|
|
||||||
операций
|
|
||||||
+ в RxDbGrid доработан обработчик события OnGetCellProps
|
|
||||||
+ в TRxMemoryData введено свойство OnFilterRecordEx - временно, пока в TDataSet
|
|
||||||
не реализуют работу свойства OnFilterRecord
|
|
||||||
16.12.2005 - версия 1.0.11.35
|
|
||||||
+ доработано поведение TToolbarButton для коректной работы
|
|
||||||
в последних сборках Lazarus
|
|
||||||
+ исправлен регистр в названиях некоторых модулей
|
|
||||||
+ пробная сборка под Linux
|
|
||||||
27.11.2005 - версия 1.0.11.34
|
|
||||||
- TToolPanel - исправлена ошибка сохранения свойств панели при
|
|
||||||
редактировании её в runtime
|
|
||||||
22.10.2005 - версия 1.0.10.33
|
|
||||||
+ TRxLabel - перенесён компонент
|
|
||||||
+ TSecretPanel - перенесён компонент
|
|
||||||
- TRxMemoryData - внесён код, обходящий ошибку востановления свойства FieldDefs
|
|
||||||
в модуле DB - работает вроде теперь всё правильно
|
|
||||||
+ TRxLoginDialog - начат перенесён
|
|
||||||
- TRxDBComboBox - небольшой багфикс
|
|
||||||
15.10.2005 - версия 1.0.9.30
|
|
||||||
+ TRxCustomDBLookupCombo - Улучшена отрисовка
|
|
||||||
(старый стиль отрисовки будет при включённом Flat)
|
|
||||||
+ TRxCustomDBLookupCombo - При нажатии клавишы ESC поле очищается (метод DataField.Clear)
|
|
||||||
- TRxCustomDBLookupCombo - Исправлена ошибка отрисовки пустого значения DataField в режиме
|
|
||||||
DisplayAllFields - отображается значение свойства EmptyValue
|
|
||||||
- TRxCustomDBLookupCombo - Исправлена ошибка открытия списка допустимых значений при
|
|
||||||
пустом DataField (список стоял на последней записи)
|
|
||||||
- TRxCustomDBLookupCombo - исправлен расчёт высоты выпадающего списка в зависимости
|
|
||||||
от значения свойства DropDownCount
|
|
||||||
- TRxCustomDBLookupCombo - исправлен выбор значения в выпадающем спсике нажатием
|
|
||||||
клавишы Enter
|
|
||||||
+ TRxMemoryData - Введён код для обхода глюка Lazarus с не корректным созданием полей
|
|
||||||
по данным FieldDefs, которые были созданы в Design-time
|
|
||||||
+ TRxMemoryData - реализован редактор компоненты - копия струтктуры из другого
|
|
||||||
DataSet-а
|
|
||||||
+ TRxDBGrid - подключен редактор свойства FieldName у колонки
|
|
||||||
+ TRxDBGrid - реализована возможность подстановки значений для отображения
|
|
||||||
через свойства KeyList и PickList (аналогично TRxDBComboBox)
|
|
||||||
10.10.2005
|
|
||||||
- Исправлена ошибка при рисовании изображения в RxDbGrid из ImageList,
|
|
||||||
также операция немного ускорена
|
|
||||||
- исправлена ошибка при изменении ширины колонки (деление на 0)
|
|
||||||
+ начата работа над сохранением состояния колонок RxDbGrid через FormStorage
|
|
||||||
- Небольшой багофикс при работе с изображениями в TToolPanel
|
|
||||||
+ Добавил компонент TPageManager
|
|
||||||
+ Написал новый компонент TRxAppIcon - это для тех кто не хочет возиться с
|
|
||||||
ресурсами - в момент запуска приложению будет сопоставлена указанная иконка.
|
|
||||||
т.к. она хранится не в стандартном виндовом ресурсе - поэтому проводник
|
|
||||||
будет показывать на приложении обычную иконку - но в момент запуска
|
|
||||||
появится указанная. Работает только под Windows - если кто знает как это
|
|
||||||
делается в других системах - допишите.
|
|
||||||
Когда в лазаре доделают нормальную работу с иконками - компоненту надо
|
|
||||||
переписать - а может лазарь научится создавать стандартный ресурс виндовый
|
|
||||||
для программы - тогда в этой компоненте надобность вобще отпадёт
|
|
||||||
|
|
||||||
08.10.2005
|
|
||||||
+ Окно настройки теперь вегда сверху
|
|
||||||
+ Для более тонкой настройки отображения кнопок добави в опциях тулбара
|
|
||||||
два дополнительных флага - tpGlyphPopup, tpCaptionPopup
|
|
||||||
- небольшие багофиксы
|
|
||||||
+ реализована работа с изображениями в RxDbGrid через ImageList (см. readmy.txt)
|
|
||||||
+ Добавлен компонент TRXXPManifest - работает только под Windows -
|
|
||||||
поддержка XP манифеста
|
|
||||||
05.10.2005
|
|
||||||
+ убрал свойстов Flat, TransparentBtn
|
|
||||||
+ Добавил свойство Options, включающее tpFlatBtns, tpTransparentBtns
|
|
||||||
+ Добавил включение окна настройки подвойному клику на панели
|
|
||||||
правой кнопкой мышки с зажатым Ctrl
|
|
||||||
- исправл баг множественного открытия окна настройки панели
|
|
||||||
+ у TToolbarItem добавил свойство Tag
|
|
||||||
|
|
||||||
04.10.2005
|
|
||||||
+ в TToolPanel пофиксил баг не верного начального размера кнопки
|
|
||||||
+ Добавлена возможность прорисовки кнопок в стиле WindowsXP
|
|
||||||
+ При в стиле Flat и WindowsXP при наведении курсора на кнопку
|
|
||||||
она приподнимается для лучшего визуализации
|
|
||||||
- т.к. TImageList.Draw не умеет рисовать запроещённое состояние
|
|
||||||
изоражения при задисабливании Action не дисаблится картинка
|
|
||||||
также из-за этого нет возможности сделать изображение с тенью
|
|
||||||
- вылазиет баг в лазаре если в дизайнере удалить напрямую с панели
|
|
||||||
кнопку (не через Items) - ещё не знаю как в лазаре в дизайнере
|
|
||||||
для некоторых элементов запретить удаление
|
|
||||||
+ Добавил демку для TToolPanel
|
|
||||||
|
|
||||||
03.10.2005
|
|
||||||
+ перевёл все имена файлов к нижнему регистру
|
|
||||||
+ в TToolPanel пофиксил некторые баги
|
|
||||||
+ работает окно настройки панели
|
|
||||||
+ Поддерживается DropDownMenu в стиле полного нажатия кнопки
|
|
||||||
+ скрытие не нужных кнопок (настройка в run-time)
|
|
||||||
|
|
||||||
|
|
||||||
02.10.2005 (beta)
|
|
||||||
+ Начата реализация (полностью своя) TToolPanel - аналог RxToolbar
|
|
||||||
по функциональности похоже на стандартный ToolBar - точно
|
|
||||||
также работает через Actions (для добавления кнопок использовать метод Items)
|
|
||||||
полностью моя перерисовка кнопок - нормальный внешний вид.
|
|
||||||
работает:
|
|
||||||
+ кустомизация расположения кнопок и внешнего вида в run-time
|
|
||||||
+ сохранение во внешний конфигурационный файл через propstorage
|
|
||||||
будут реализованы:
|
|
||||||
- DropDownMenu - в зависимости от стиля кнопки либо выпадает
|
|
||||||
при нажатии на кнопку, либо будет отдельнная облясть кнопки (суб.кнопка) для
|
|
||||||
вызова меню
|
|
||||||
- скрытие ненужных кнопок (настройка в run-time)
|
|
||||||
- стили отображения (сейчас стандарт Win9x, Flat) - добавляю как в WinXP
|
|
||||||
- мастер создания панели в DesignTime в лазаре
|
|
||||||
змеченые глюки
|
|
||||||
- не всегда коректно востанавливается при ширина кнопок
|
|
||||||
|
|
||||||
принимаю заявки на функциональность и ошибки
|
|
||||||
|
|
||||||
30.10.2005
|
|
||||||
+ перенёс
|
|
||||||
+ перенёс RxDice, RxSwith, TRxDBComboBox
|
|
||||||
+ Разбил на 2 закладки - RX и RX DBAware
|
|
||||||
- исправил баг с начальным размером у TRxDBLookupCombo
|
|
||||||
|
|
||||||
|
|
||||||
28.10.2005
|
|
||||||
+ практически работает Currency edit (не проверил под линухом)
|
|
||||||
- из-за ошибки в функиции FormatFloat из FCL нельзя использовать в строке
|
|
||||||
форматирования одинарные или двойные кавычки - повесится
|
|
||||||
19.10.2005
|
|
||||||
+ TRxMemoryData - работает почти полностью - нет поддержки blob - надо разбирать
|
|
||||||
+ начал перенос Currency edit
|
|
||||||
+ правил ошибки
|
|
||||||
- ещё не всё проверил в линуксе - теоретически должно собраться и работать
|
|
||||||
05.10.2005
|
|
||||||
+ Добавлен TRxDBGrid - написан по "мотивам оригинального, ещё есть что переносить
|
|
||||||
самое главное, почему его начал переносить - захотелось сделать сортировку
|
|
||||||
наборов данных как в DBGridEh из EhLib. Я вышел с предложением на
|
|
||||||
Jesus Reyes (автор DBGrid-а о добавлении функциональности) - он сказал, что нефиг
|
|
||||||
превращать стандартный компонент в новогоднюю ёлку. Поэтому стал сам доделывать
|
|
||||||
наследника.
|
|
||||||
Сейчас работает многострочные заголовки, подерживается нажатие на заголовок
|
|
||||||
как на кнопку с опциональным отображением символа сортировки (соответсвующее событие)
|
|
||||||
|
|
||||||
также добавил механизм автосортировки см. файл exSortFB.pas - тут наиболее лаконично
|
|
||||||
всё. Кратко - для необходимых типов источноков данных
|
|
||||||
пишется обёртка (наследник от TExDBGridSortEngine) который умеет в этом
|
|
||||||
источнике данных переупорядочивать записи. Мой TFBDataSet (работаю с FireBird)
|
|
||||||
умеет сам в локальном кэше сортировать запис - поэтому там всё просто.
|
|
||||||
exsortmds.pas - этот модуль для сортировки данных в стандартном MemDS
|
|
||||||
немного кривовато написано - практически нет механизмов добраться до внутреннего
|
|
||||||
буфера данных (кстати в MemDS есть баг позиционирования курсора на 1-ю запись)
|
|
||||||
|
|
||||||
- TRxMemoryData - вроде всё скомпилировалось практически без правки - но чтото при
|
|
||||||
добавлении записи - ошибка (подозреваю не совместимость DataSet-а из дельфей и Лазаря)
|
|
||||||
надо разобраться. Стандартный MemDS ограничен - нет блоб и прочего.
|
|
||||||
31.09.2005
|
|
||||||
+ Add component TFolderLister - это моя разработка - на основе неё добавлю
|
|
||||||
ещё компонент для построения меню, содержащее отчёты для LazReport-a
|
|
||||||
(аналог у меня в дельфях моей также разработки)
|
|
||||||
07.01.2005
|
|
||||||
i'm port next RX components:
|
|
||||||
TDBDateEdit - не даёт вводить значения руками - наследство от оригинального
|
|
||||||
TDateEdit
|
|
||||||
TRxDBCalcEdit
|
|
||||||
TRXLookupEdit,
|
|
||||||
TRxDBLookupCombo - тут баг - при кидании на форму не коректно устанавливаются
|
|
||||||
размеры, приходится руками ресайзить - когда нить доделаю - или кто сможет -
|
|
||||||
помогайте.
|
|
||||||
|
|
||||||
|
|
||||||
and next modules:
|
|
||||||
DateUtil.pas
|
|
||||||
DbUtils.pas
|
|
||||||
rxdconst.pas
|
|
||||||
RXStrutils.pas
|
|
||||||
VCLUtils.pas
|
|
||||||
|
|
||||||
жду замечаний и предложений
|
жду замечаний и предложений
|
||||||
Лагунов Алексей (alexs)
|
Лагунов Алексей (alexs)
|
||||||
|
@ -1,2 +1 @@
|
|||||||
Замеченные проблемы:
|
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ end;
|
|||||||
|
|
||||||
procedure RegisterUnitDBDateEdit;
|
procedure RegisterUnitDBDateEdit;
|
||||||
begin
|
begin
|
||||||
RegisterComponents('RX DBAware',[TDBDateEdit, TRxDBCalcEdit, TRxDBCurrEdit]);
|
RegisterComponents('RX DBAware',[TRxDBDateEdit, TRxDBCalcEdit, TRxDBCurrEdit]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure RegisterRXLookup;
|
procedure RegisterRXLookup;
|
||||||
|
@ -49,22 +49,11 @@
|
|||||||
|
|
||||||
{.$DEFINE USE_DEPRECATES}
|
{.$DEFINE USE_DEPRECATES}
|
||||||
|
|
||||||
//
|
|
||||||
{.$DEFINE DBDateEdit_OLD}
|
|
||||||
|
|
||||||
{.$DEFINE OLD_EDITBUTTON}
|
|
||||||
|
|
||||||
{$if FPC_FULLVERSION<20701}
|
{$if FPC_FULLVERSION<20701}
|
||||||
{$DEFINE NoAutomatedBookmark}
|
{$DEFINE NoAutomatedBookmark}
|
||||||
{$DEFINE RX_USE_LCL_DEVEL}
|
{$DEFINE RX_USE_LCL_DEVEL}
|
||||||
{$endif}
|
{$endif}
|
||||||
|
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
{$if FPC_FULLVERSION<20701}
|
|
||||||
{$DEFINE RX_USE_LAZARUS_RESOURCE}
|
|
||||||
{$ENDIF}
|
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
{$IFDEF NoAutomatedBookmark}
|
{$IFDEF NoAutomatedBookmark}
|
||||||
{$ELSE}
|
{$ELSE}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
@ -992,11 +992,7 @@ type
|
|||||||
FGrid: TRxDBGrid;
|
FGrid: TRxDBGrid;
|
||||||
FCol, FRow: integer;
|
FCol, FRow: integer;
|
||||||
protected
|
protected
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
procedure Change; override;
|
|
||||||
{$ELSE}
|
|
||||||
procedure EditChange; override;
|
procedure EditChange; override;
|
||||||
{$ENDIF}
|
|
||||||
procedure KeyDown(var Key: word; Shift: TShiftState); override;
|
procedure KeyDown(var Key: word; Shift: TShiftState); override;
|
||||||
|
|
||||||
procedure WndProc(var TheMessage: TLMessage); override;
|
procedure WndProc(var TheMessage: TLMessage); override;
|
||||||
@ -1403,19 +1399,11 @@ end;
|
|||||||
|
|
||||||
{ TRxDBGridDateEditor }
|
{ TRxDBGridDateEditor }
|
||||||
|
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
procedure TRxDBGridDateEditor.Change;
|
|
||||||
{$ELSE}
|
|
||||||
procedure TRxDBGridDateEditor.EditChange;
|
procedure TRxDBGridDateEditor.EditChange;
|
||||||
{$ENDIF}
|
|
||||||
var
|
var
|
||||||
D:TDateTime;
|
D:TDateTime;
|
||||||
begin
|
begin
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
inherited Change;
|
|
||||||
{$ELSE}
|
|
||||||
inherited EditChange;
|
inherited EditChange;
|
||||||
{$ENDIF}
|
|
||||||
if Assigned(FGrid) and FGrid.DatalinkActive and not FGrid.EditorIsReadOnly then
|
if Assigned(FGrid) and FGrid.DatalinkActive and not FGrid.EditorIsReadOnly then
|
||||||
begin
|
begin
|
||||||
if not (FGrid.DataSource.DataSet.State in dsEditModes) then
|
if not (FGrid.DataSource.DataSet.State in dsEditModes) then
|
||||||
|
@ -112,11 +112,7 @@ type
|
|||||||
procedure UpdateKeyValue;
|
procedure UpdateKeyValue;
|
||||||
protected
|
protected
|
||||||
property PopUpFormOptions:TPopUpFormOptions read FPopUpFormOptions write SetPopUpFormOptions;
|
property PopUpFormOptions:TPopUpFormOptions read FPopUpFormOptions write SetPopUpFormOptions;
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
procedure DoButtonClick (Sender: TObject); override;
|
|
||||||
{$ELSE}
|
|
||||||
procedure ButtonClick; override;
|
procedure ButtonClick; override;
|
||||||
{$ENDIF}
|
|
||||||
function GetDefaultGlyphName: String; override;
|
function GetDefaultGlyphName: String; override;
|
||||||
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||||
procedure InternalClosePopup(AResult:boolean);virtual;
|
procedure InternalClosePopup(AResult:boolean);virtual;
|
||||||
@ -539,17 +535,9 @@ begin
|
|||||||
Text:=FLookupDataLink.DataSet.FieldByName(S).AsString;
|
Text:=FLookupDataLink.DataSet.FieldByName(S).AsString;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
procedure TRxCustomDBLookupEdit.DoButtonClick (Sender: TObject);
|
|
||||||
{$ELSE}
|
|
||||||
procedure TRxCustomDBLookupEdit.ButtonClick;
|
procedure TRxCustomDBLookupEdit.ButtonClick;
|
||||||
{$ENDIF}
|
|
||||||
begin
|
begin
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
inherited DoButtonClick(Sender);
|
|
||||||
{$ELSE}
|
|
||||||
inherited ButtonClick;
|
inherited ButtonClick;
|
||||||
{$ENDIF}
|
|
||||||
if PopupVisible then
|
if PopupVisible then
|
||||||
HideList
|
HideList
|
||||||
else
|
else
|
||||||
@ -1149,7 +1137,7 @@ end;
|
|||||||
|
|
||||||
procedure TRxCustomDBLookupCombo.NeedUpdateData;
|
procedure TRxCustomDBLookupCombo.NeedUpdateData;
|
||||||
begin
|
begin
|
||||||
if FLookupDataLink.Active and Assigned(FDataField) then
|
if FLookupDataLink.Active and Assigned(FDataField) and Assigned(FKeyField) then
|
||||||
begin
|
begin
|
||||||
if FKeyField.IsNull then FDataField.Clear
|
if FKeyField.IsNull then FDataField.Clear
|
||||||
else FDataField.AsString:=FKeyField.AsString;
|
else FDataField.AsString:=FKeyField.AsString;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ Free DB Manager
|
{ Rx lib
|
||||||
|
|
||||||
Copyright (C) 2005-2012 Lagunov Aleksey alexs75 at hotbox.ru
|
Copyright (C) 2005-2012 Lagunov Aleksey alexs75 at hotbox.ru
|
||||||
|
|
||||||
@ -80,6 +80,8 @@ type
|
|||||||
property MainPanel:TRxMDIPanel read FMainPanel write FMainPanel;
|
property MainPanel:TRxMDIPanel read FMainPanel write FMainPanel;
|
||||||
published
|
published
|
||||||
property Align;
|
property Align;
|
||||||
|
property ShowHint;
|
||||||
|
property ParentShowHint;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TRxMDICloseButton }
|
{ TRxMDICloseButton }
|
||||||
@ -138,6 +140,8 @@ type
|
|||||||
property Align;
|
property Align;
|
||||||
property BevelInner;
|
property BevelInner;
|
||||||
property BevelOuter;
|
property BevelOuter;
|
||||||
|
property ShowHint;
|
||||||
|
property ParentShowHint;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
@ -55,7 +55,6 @@ implementation
|
|||||||
uses rxmemds;
|
uses rxmemds;
|
||||||
|
|
||||||
type
|
type
|
||||||
THackRxMemoryData = class(TRxMemoryData);
|
|
||||||
THackRxColumnFooter = class(TRxColumnFooter);
|
THackRxColumnFooter = class(TRxColumnFooter);
|
||||||
THackDataLink = class(TDataLink);
|
THackDataLink = class(TDataLink);
|
||||||
THackDataSet = class(TDataSet);
|
THackDataSet = class(TDataSet);
|
||||||
|
@ -106,21 +106,13 @@ type
|
|||||||
procedure HidePopup; virtual;
|
procedure HidePopup; virtual;
|
||||||
procedure ShowPopup(AOrigin: TPoint); virtual;
|
procedure ShowPopup(AOrigin: TPoint); virtual;
|
||||||
procedure ApplyDate(Value: TDateTime); virtual;
|
procedure ApplyDate(Value: TDateTime); virtual;
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
procedure Change; override;
|
|
||||||
{$ELSE}
|
|
||||||
procedure EditChange; override;
|
procedure EditChange; override;
|
||||||
{$ENDIF}
|
|
||||||
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
|
||||||
procedure KeyPress(var Key: Char); override;
|
procedure KeyPress(var Key: Char); override;
|
||||||
|
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
procedure DoButtonClick (Sender: TObject); override;
|
|
||||||
{$ELSE}
|
|
||||||
procedure ButtonClick; override;
|
procedure ButtonClick; override;
|
||||||
procedure EditKeyDown(var Key: word; Shift: TShiftState); override;
|
procedure EditKeyDown(var Key: word; Shift: TShiftState); override;
|
||||||
procedure EditKeyPress( var Key: char); override;
|
procedure EditKeyPress( var Key: char); override;
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
function GetDefaultGlyphName: String; override;
|
function GetDefaultGlyphName: String; override;
|
||||||
function CreatePopupForm:TPopupCalendar;
|
function CreatePopupForm:TPopupCalendar;
|
||||||
@ -548,11 +540,7 @@ procedure TCustomRxDateEdit.AcceptValue(const AValue: TDateTime);
|
|||||||
begin
|
begin
|
||||||
SetDate(AValue);
|
SetDate(AValue);
|
||||||
if Modified then
|
if Modified then
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
inherited Change;
|
|
||||||
{$ELSE}
|
|
||||||
inherited EditChange;
|
inherited EditChange;
|
||||||
{$ENDIF}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomRxDateEdit.UpdateFormat;
|
procedure TCustomRxDateEdit.UpdateFormat;
|
||||||
@ -721,18 +709,10 @@ begin
|
|||||||
SelectAll;
|
SelectAll;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
procedure TCustomRxDateEdit.Change;
|
|
||||||
{$ELSE}
|
|
||||||
procedure TCustomRxDateEdit.EditChange;
|
procedure TCustomRxDateEdit.EditChange;
|
||||||
{$ENDIF}
|
|
||||||
begin
|
begin
|
||||||
if not FFormatting then
|
if not FFormatting then
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
inherited Change;
|
|
||||||
{$ELSE}
|
|
||||||
inherited EditChange;
|
inherited EditChange;
|
||||||
{$ENDIF}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomRxDateEdit.KeyDown(var Key: Word; Shift: TShiftState);
|
procedure TCustomRxDateEdit.KeyDown(var Key: Word; Shift: TShiftState);
|
||||||
@ -788,7 +768,6 @@ begin
|
|||||||
inherited KeyPress(Key);
|
inherited KeyPress(Key);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IFNDEF OLD_EDITBUTTON}
|
|
||||||
procedure TCustomRxDateEdit.EditKeyDown(var Key: word; Shift: TShiftState);
|
procedure TCustomRxDateEdit.EditKeyDown(var Key: word; Shift: TShiftState);
|
||||||
begin
|
begin
|
||||||
if (Key in [VK_PRIOR, VK_NEXT, VK_LEFT, VK_UP, VK_RIGHT, VK_DOWN,
|
if (Key in [VK_PRIOR, VK_NEXT, VK_LEFT, VK_UP, VK_RIGHT, VK_DOWN,
|
||||||
@ -840,22 +819,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
inherited EditKeyPress(Key);
|
inherited EditKeyPress(Key);
|
||||||
end;
|
end;
|
||||||
{$ENDIF}
|
|
||||||
|
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
procedure TCustomRxDateEdit.DoButtonClick(Sender: TObject);
|
|
||||||
{$ELSE}
|
|
||||||
procedure TCustomRxDateEdit.ButtonClick;
|
procedure TCustomRxDateEdit.ButtonClick;
|
||||||
{$ENDIF}
|
|
||||||
var
|
var
|
||||||
D: TDateTime;
|
D: TDateTime;
|
||||||
A: Boolean;
|
A: Boolean;
|
||||||
begin
|
begin
|
||||||
{$IFDEF OLD_EDITBUTTON}
|
|
||||||
inherited DoButtonClick(Sender);
|
|
||||||
{$ELSE}
|
|
||||||
inherited ButtonClick;
|
inherited ButtonClick;
|
||||||
{$ENDIF}
|
|
||||||
if CalendarStyle <> csDialog then
|
if CalendarStyle <> csDialog then
|
||||||
PopupDropDown(True)
|
PopupDropDown(True)
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user