Доработки Rx
Модераторы: alexs, Модераторы
alexs писал(а):Так устроит?
Пока да. ) Спасибо!
Хочу выразить благодарность за RxDateEdit. Стандартный DateEdit не работает под Mac OS X. А Ваш работает норм. Единственное пожелание, добавить в него свойство DateFormat (не нашел в компоненте), чтобы можно было указывать для каждого отдельно формат вывода.
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
А в чём необходимость задания формата индивидуально?
Сейчас там все берётся настройки из системы. На мой взгляд - это правильно. Не хорошо - когда ваша программа на рабочем месте ведёт себя не так, как все остальные программы и сама система. Или в Mac OS X совсем экзотические форматы?
Там ещё есть настройка на кол-во знаков при отображении года - YearDigits.
Сейчас там все берётся настройки из системы. На мой взгляд - это правильно. Не хорошо - когда ваша программа на рабочем месте ведёт себя не так, как все остальные программы и сама система. Или в Mac OS X совсем экзотические форматы?
Там ещё есть настройка на кол-во знаков при отображении года - YearDigits.
Кстати про YearDigits. Пока не укажешь явно количество знаков, то в свойстве Text абракадабра при выбранном параметре "показывать текущую дату по умолчанию".
Если не корректировать формат, то по умолчанию (по крайней мере в Mac OS X) дата в компоненте выглядит ММ/ДД/ГГ. При этом в настройках системы стоит ДД.ММ.ГГГГ. Поэтому задаю при старте основного потока:
Но в некоторых фреймах программы нужен индивидуальный формат отображения. Поэтому приходится извращаться с переключением настроек FormatSettings перед выводом.
В принципе, я думаю это частный случай, так что можно и не добавлять такой параметр. Хотя в стандартном DateEdit он есть
Если не корректировать формат, то по умолчанию (по крайней мере в Mac OS X) дата в компоненте выглядит ММ/ДД/ГГ. При этом в настройках системы стоит ДД.ММ.ГГГГ. Поэтому задаю при старте основного потока:
Код: Выделить всё
FormatSettings.DateSeparator:= '.';
FormatSettings.LongDateFormat:= 'dd.mm.yyyy';
FormatSettings.ShortDateFormat:= 'dd.mm.yy';
Но в некоторых фреймах программы нужен индивидуальный формат отображения. Поэтому приходится извращаться с переключением настроек FormatSettings перед выводом.
В принципе, я думаю это частный случай, так что можно и не добавлять такой параметр. Хотя в стандартном DateEdit он есть
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
VirtUX писал(а):Поэтому задаю при старте основного потока:
У меня вообще это штатное начало всех программ
Ещё не забудь про:
Код: Выделить всё
DefaultFormatSettings.ThousandSeparator:=' ';
DefaultFormatSettings.CurrencyString:='р.';
VirtUX писал(а):Но в некоторых фреймах программы нужен индивидуальный формат отображения.
Там надо подумать. Там же ещё формат маски редактора завязан.
Можна сделать правильную сортировку дат в списке значений фильтра в таблице?
Код: Выделить всё
function CompareDates(List: TStringList; Index1, Index: Integer): Integer;
var
d1, d2: TDateTime;
begin
TryStrToDateTime(List[Index1], d1);
TryStrToDateTime(List[Index], d2);
Result := -CompareDate(d1, d2);
end;
procedure TRxDBGrid.FillFilterData;
...
for i := 0 to Columns.Count - 1 do
begin
C := TRxColumn(Columns[i]);
if C.Field.DataType = ftDate then begin
c.Filter.ValueList.SortStyle := sslUser;
C.Filter.ValueList.CustomSort(@CompareDates);
end;
end;Можна добавить возможность вернуть дефолтние значения длинни и сортировки колонок, напримор добавить кнопку Default на rxDBGridColumsForm?
Проблема в том что если добавляю поле в таблицу то колонка в гриде добавляется в конец, может из-за Ini-файла, а нужно по середине. Приходиться вручную передвигать или что-то типа такого: IniPropStorage.EraseSections i DBGrid.Columns.Clear;
или в procedure TRxDBGrid.OnIniLoad(Sender: TObject);
...
if (ACount = FVersion) and (ACount = Columns.Count) then
или
if (ACount = Columns.Count) then // kit
C.Index := Min(FPropertyStorageLink.Storage.ReadInteger(S1 + sIndex, C.Index), Columns.Count - 1);
или в procedure TRxDBGrid.OnIniLoad(Sender: TObject);
...
if (ACount = FVersion) and (ACount = Columns.Count) then
или
if (ACount = Columns.Count) then // kit
C.Index := Min(FPropertyStorageLink.Storage.ReadInteger(S1 + sIndex, C.Index), Columns.Count - 1);
Чем rxpopupnotifier лучше tpopupnotifier?
