Страница 5 из 8
Добавлено: 18.04.2008 11:36:37
alexs
Кстати, в догонку о
LookupDisplayIndex - если оно превышает кол-во полей для отображения что лучше сделать?
Отображать первое поле? или вобще ничего не отображать?
VAshot писал(а):Может просто расшарить свойства таблички для LookUp'ов?
Тогда это всё можно будет задавать напрямую
Сам грид не существует всё время - он создаётся только в момент выпадения списка. Именно поэтому я и сделал клас-обёртку. Ибо расточительно дюже держать в памяти столько гридов.
VAshot писал(а):Еще б туда возможность изменения типа отображения ScrollBar'ов:
Ну если очень хочется - то можно сделать. Что ещё?
Добавлено: 18.04.2008 11:49:09
VAshot
Про скролы: думаю хватит строки
Result.FGrid.ScrollBars:=ssAutoBoth;
без вынесения в свойства, с трудом представляю когда нужно другое.
А вот приоритет и размеры - хорошо бы.
Как вариант, можно и авторазмер PopUp'а по ширине.
Сейчас для себя сделал следующее (особым разнообразием мои потребности не отличаются):
Код: Выделить всё
Result.FGrid.AutoFillColumns:=false;
Result.FGrid.ScrollBars:=ssAutoBoth;
Result.FGrid.OptimizeColumnsWidthAll;
if Result.FGrid.Columns.Count > 1 then
Result.FGrid.Columns.Items[Result.FGrid.Columns.Count-1].SizePriority:=0;
Result.FGrid.AutoFillColumns:=true;
В Гриде:
вот такое работает
а вот такое нет:
Вроде один и тот же объект, а доступность свойств отличается от способа доступа....
Добавлено: 18.04.2008 12:00:13
ViTality
Чтобы дапрграмно задлать значени - присваивай значение полю из DataField.
спс. ну в принципе так и делал. мне это показалось затычкой.
Насчёт пустого - есть тма глюк - очищается поле по ESC, а вот чтобы не портилось пустое - никак руки не дойдут сделать
может стоит сделать чтоб можно было указать номер записи отображаемой по умолчанию вместо EmptyValue
(у меня просто нет таких форм с пустыми полями).
посмотри в своем проекте "Управление проектами". На закладке Справочники добавь сотрудника без указания организации. а потом еще раз открой его на редактирование. и увидишь что огранизация у него стоит та которая была у записи под курсором при создании. (Вообще спасибо что выложил исходники этого проекта, я там многое подсмотрел

)
Кстати, в догонку о LookupDisplayIndex - если оно превышает кол-во полей для отображения что лучше сделать?
думаю лучше ничего или последнее.
Добавлено: 18.04.2008 12:57:38
alexs
ViTality писал(а):посмотри в своем проекте "Управление проектами"
Я в нём не завожу сотрудников без организации

.
ViTality писал(а):думаю лучше ничего или последнее
Так что именно?

Добавлено: 18.04.2008 13:15:10
ViTality
Так что именно?
последнее
Добавлено: 18.04.2008 13:56:34
alexs
Залил на SVN подержку для TRxDBLookupCombo.DropDownCount
Добавлено: 18.04.2008 14:08:58
ViTality
ура, ура, ура. опробуем...
вроде все гут

Добавлено: 18.04.2008 14:26:54
VAshot
Вот так, на мой взгляд, лучше:
Код: Выделить всё
****ShowRxDBPopUpForm
Result.FGrid.ScrollBars:=ssVertical;
Result.FGrid.AutoFillColumns:=false;
Result.FGrid.OptimizeColumnsWidthAll;
// for i:=0 to Result.FGrid.Columns.Count-1 do
// Result.FGrid.Columns.Items[1].SizePriority:=Result.FPopUpFormOptions.Columns.Items[i].SizePriority;
w:=0;
for i:=0 to Result.FGrid.Columns.Count-1 do
w:=w+Result.FGrid.Columns.Items[i].Width+20; //20 - ширина scrolla
if w < Result.FPopUpFormOptions.DropDownWidth then begin
Result.FGrid.AutoFillColumns:=APopUpFormOptions.AutoFillColumns;
end
else begin
if w>500 then begin
w:=500;
Result.FGrid.ScrollBars:=ssBoth;
end;
Result.FPopUpFormOptions.DropDownWidth:=w;
Result.FGrid.Width:=Result.FPopUpFormOptions.DropDownWidth;
Result.FGrid.AutoFillColumns:=APopUpFormOptions.AutoFillColumns;
{Сюда надо что-то дописать, а то правильно начинает отображаться только посе второго вызова PopUp};
end;
Именно в ShowRxDBPopUpForm, т.к. ранее узанть ширину текста нельзя.
Вот это не работает (свойство SizePriority прописал), никто ж не создавал эти колонки
Код: Выделить всё
Result.FGrid.Columns.Items[1].SizePriority:=Result.FPopUpFormOptions.Columns.Items[i].SizePriority;
где прописать бы эти свойства? чтоб можно было из основной програмы ими управлять?
Добавлено: 18.04.2008 15:10:16
alexs
1. Почему скрол прибовляется к каждому столбцу?
2. Честно говоря мне больше нравится, когда выпадающий список имеет ширину лукапа.
3. Что нибудь подумаю.
Добавлено: 18.04.2008 15:49:36
VAshot
1. Потому, что скрол отнимает место у ячеек, таблица должна быть=сумма ячеек + скрол, если есть, ну и границы.
2. Минимальная ширина - да, а когда текст не помещается - не слишком красиво (особенно когда растянуть нельзя).
Вот так лучше:
Код: Выделить всё
function ShowRxDBPopUpForm(AControl:TWinControl; ADataSet:TDataSet;
AOnPopUpCloseEvent:TPopUpCloseEvent; APopUpFormOptions:TPopUpFormOptions;
AFieldList:string; ALookupDisplayIndex, BtnWidtn: integer; const Font:TFont):TPopUpForm;
var
i, w, ww: Integer;
begin
Result:=TPopUpForm.CreatePopUp(AControl, APopUpFormOptions, AFieldList, BtnWidtn);
Result.FOnPopUpCloseEvent:=AOnPopUpCloseEvent;
Result.DataSet:=ADataSet;
//---------------------------------------------------- VAshot
ww:=Result.FPopUpFormOptions.DropDownWidth;
Result.FGrid.ScrollBars:=ssVertical;
Result.FGrid.AutoFillColumns:=false;
if Result.FPopUpFormOptions.DropDownWidth<Result.Width then begin
Result.FPopUpFormOptions.DropDownWidth:=Result.Width;
end;
w:=0;
for i:=0 to Result.FGrid.Columns.Count-1 do
w:=w+Result.FGrid.Columns.Items[i].Width;
if Result.FPopUpFormOptions.AutoFillColumns then begin
Result.FGrid.OptimizeColumnsWidthAll;
// for i:=0 to Result.FGrid.Columns.Count-1 do
if Result.FGrid.Columns.Count > 1 then
Result.FGrid.Columns.Items[1].SizePriority:=0;
w:=0;
for i:=0 to Result.FGrid.Columns.Count-1 do
w:=w+Result.FGrid.Columns.Items[i].Width;
if w = Result.FPopUpFormOptions.DropDownWidth then begin
end;
if w < Result.FPopUpFormOptions.DropDownWidth then begin
w:=Result.FPopUpFormOptions.DropDownWidth;
Result.FGrid.AutoFillColumns:=APopUpFormOptions.AutoFillColumns;
end;
if w > Result.FPopUpFormOptions.DropDownWidth then begin
Result.FPopUpFormOptions.DropDownWidth:=w+20; //20 - ширина scrolla
Result:=TPopUpForm.CreatePopUp(AControl, Result.FPopUpFormOptions, AFieldList, BtnWidtn);
Result.FOnPopUpCloseEvent:=AOnPopUpCloseEvent;
Result.DataSet:=ADataSet;
Result.FGrid.AutoFillColumns:=false;
Result.FGrid.OptimizeColumnsWidthAll;
// for i:=0 to Result.FGrid.Columns.Count-1 do
if Result.FGrid.Columns.Count > 1 then
Result.FGrid.Columns.Items[1].SizePriority:=0;
Result.FGrid.AutoFillColumns:=APopUpFormOptions.AutoFillColumns;
Result.FGrid.ScrollBars:=ssVertical;
end;
end;
if w > Result.FPopUpFormOptions.DropDownWidth+20 then
Result.FGrid.ScrollBars:=ssBoth;
//----------------------------------------------------
Result.LookupDisplayIndex:=ALookupDisplayIndex;
Result.LookupDisplayIndex:=ALookupDisplayIndex;
if Assigned(Font) then
begin
Result.FGrid.Font.Assign(Font);
// Result.Font.Assign(Font);
end;
{$IFDEF LINUX}
if Result.ShowModal = mrOk then
if Assigned(AOnPopUpCloseEvent) then
AOnPopUpCloseEvent(true);
Result.Free;
Result:=nil;
{$ELSE LINUX}
Result.Show;
Result.FGrid.UpdateActive;
{$ENDIF LINUX}
Result.FPopUpFormOptions.DropDownWidth:=ww;
end;
А вот как передать значения SizePriority или ширины колонок......
Добавлено: 18.04.2008 17:15:32
VAshot
Исправил косячки, правда код коряв и не оптимален

уж точно.
Re: RxFPC - новая версия
Добавлено: 14.05.2008 14:16:01
VAshot
В WhatsNew сказано, что доработа отрисовка маркера сортировки в гриде. А как оно (показ маркера) включается, активизируется?
Re: RxFPC - новая версия
Добавлено: 14.05.2008 17:36:06
alexs
либо назначай обработчик для события OnGetBtnParam
либо используй прослойку для автосортировки (для примера смотри файл exsortfb.pas).
Для FBDataSet, RxMemDataSet, tmemdataset и также ZeosQuery это уже есть. Если что-то другое - дописывай.
Re: RxFPC - новая версия
Добавлено: 01.09.2008 17:31:41
alexs
Проверьте, кто сейчас на винде - изменил код для выравнивания кнопок на панели инструментов - работает нормально?
Re: RxFPC - новая версия
Добавлено: 16.10.2008 08:40:08
Brainenjii
Если имеется в виду TToolPanel - то не понял, где там выравнивание ^_^ Но если добавить несколько в Items, а потом попытаться удалить TToolPanel - вылезет AV.
И ещё - heaptrc ругается на pickdate, если положить RxDateEdit на форму.