Все вопросы связанные с программированием. Языки программирования. Средства разработки.
Ответить
Аватара пользователя
tAZAR
Не в сети
Модератор
Модератор
Сообщения: 567
Зарегистрирован: Ср июн 23, 2004 8:13
Откуда: г.Шахты

Delphi 7 + DGBrid Нид Хелп!

Сообщение tAZAR »

Пришлось писать прогу на Делфи, столкнулся с такой вот траблой:
есть DBGrid, подвязанный к TADOTable, в DBgrid добавляю собственноручно колонку и даю ей,н.п. FieldName='OPA'; Теперь хочу руками проставлять номера записей в этой колонке (типа - номер строки проводки в спецификации к документу). onUpdate не помогает - все, вроде как, срабатывает, только цифры не появляются...
Есть ли способ вручную (из прог.) в DBGrid заполнить определенную ячейку?
Еще вопрос:
Почему SelectedRow имеет значение, только когда у дбгрида выставлен MultiSelect := true? Приходится еще из-за этого юзать букмарки. Я как понял, сам dbgrid данных не содержит, а всегда выкачивает их из своего datasource.dataset. И нафига ж тогда возможность добавлять свои колонки, которые не соответствуют полям таблиц???
И еще вопрос:
Если заменю все это на StringGrid - как мне названия колонок в ейном хидерконтроле проставить??
Блин, плохо знаю дельфи и этот VCL :-)

Аватара пользователя
Hank
Не в сети
Почётный форумщик
Почётный форумщик
Сообщения: 4299
Зарегистрирован: Чт май 05, 2005 19:35
Откуда: RnD

Сообщение Hank »

tAZAR,
из Grid'ов приходилось сталкиваться только со StringGrid. Для баз данных лучше использовать DBGrid, будет намного проще, чем приспосабливать StringGrid.
а вопрос задай тут http://www.delphimaster.ru/cgi-bin/forum.pl?n=1
ответят обязательно.
как мне названия колонок в ейном хидерконтроле проставить??
элементы cols и rows с 0 индексом - названия колонок/строк
Люблю повеселиться, особенно пожрать,
Люблю и поработать, особенно поспать )

Аватара пользователя
tAZAR
Не в сети
Модератор
Модератор
Сообщения: 567
Зарегистрирован: Ср июн 23, 2004 8:13
Откуда: г.Шахты

Сообщение tAZAR »

Eraser писал(а):элементы cols и rows с 0 индексом - названия колонок/строк
Злобный замысел Borland ;-)
Спасибо большое :-) Теперь разобрался.
А трабл с дбгридом я сам разрулил черех пол часа после того, как сообщение на форуме оставил...

Аватара пользователя
tAZAR
Не в сети
Модератор
Модератор
Сообщения: 567
Зарегистрирован: Ср июн 23, 2004 8:13
Откуда: г.Шахты

Сообщение tAZAR »

Не стал разводить отдельный топ для вот этого.
есть:

frmRest := TFormRest.Create(Self);
frmRest.dtRest.Date := Now;
frmRest.iType := 6;
frmRest.Show();

Каким - то чудом frmRest.OnShow срабатывает сразу после Create(Self);
форма мдишная. и, соответственно, dtRest.Date устанавливается уже после того, как форму показали, а у меня там ( в OnShow) лежит рассчет остатков, которые из-за этого считаются на неправильное число (то, которое изначально лежит в dtRest.Date - это DateTimePicker. Понту от строк после frmRest.Create никакого. Значения устанавливаются, но поздно....
Тов. делфисты, подскажите, как бороться с этой лажей, плз....

Я как понял - Create автоматом показывает форму, зараза...

Аватара пользователя
DbIMok
Не в сети
Администратор
Администратор
Сообщения: 8268
Зарегистрирован: Ср янв 28, 2004 7:15

Сообщение DbIMok »

TCustomForm.OnCreate Event
...
When a form is being created and its Visible property is true, the following events occur in the order listed:

1. OnCreate2. OnShow3. OnActivate4. OnPaint
то есть чтобы был смысл в Show, Visible должно быть false.

Аватара пользователя
tAZAR
Не в сети
Модератор
Модератор
Сообщения: 567
Зарегистрирован: Ср июн 23, 2004 8:13
Откуда: г.Шахты

Сообщение tAZAR »

DbIMok,
Благодарю!

Аватара пользователя
Hank
Не в сети
Почётный форумщик
Почётный форумщик
Сообщения: 4299
Зарегистрирован: Чт май 05, 2005 19:35
Откуда: RnD

Сообщение Hank »

tAZAR,
еще небольшое замечание, если не нужно отображать главную форуму прилржения при старте, то есть такое свойство Application.ShowMainForm, которое нужно поставить в false до создание главной формы приложения в проектном файле (dpr).
Люблю повеселиться, особенно пожрать,
Люблю и поработать, особенно поспать )

Аватара пользователя
Borr
Не в сети
Частый гость
Частый гость
Сообщения: 338
Зарегистрирован: Ср сен 15, 2004 17:14
Откуда: Шахты
Контактная информация:

Сообщение Borr »

tAZAR DBGrid отображает данные только из DataSet - чтобы вставлять свои значения нужно данные пропускать через ClientDataSet и уже в него вставлять нужные тебе данные либо пользоваться StringGrid'ом
frmRest := TFormRest.Create(Self);
frmRest.dtRest.Date := Now;
frmRest.iType := 6;
frmRest.Show();
Никакого Show не нужно с MDI формой. Перенеси свой код из OnShow в OnCreate и все
Стой там, иди сюда

Аватара пользователя
tAZAR
Не в сети
Модератор
Модератор
Сообщения: 567
Зарегистрирован: Ср июн 23, 2004 8:13
Откуда: г.Шахты

Сообщение tAZAR »

Borr, как ты говоришь - получится так:
frmRest := TFormRest.Create(Self); - сработает рассчет остатков - на число по умолчанию в dtRest
frmRest.dtRest.Date := Now; -- установится дата, на которую Нужно рассчитывать остатки
frmRest.iType := 6; - и еще одна фигня установится :-)

З.Ы. этот код переносить нельзя, т.к. регистр остатков открывается из нескольких мест, и дата меняется в соответствии от этих мест... а трабл я решил хоть и по-бобовому.

Аватара пользователя
Hank
Не в сети
Почётный форумщик
Почётный форумщик
Сообщения: 4299
Зарегистрирован: Чт май 05, 2005 19:35
Откуда: RnD

Сообщение Hank »

tAZAR,
а почему бы не перекрыть конструктор Create и не выполнить код там?
Люблю повеселиться, особенно пожрать,
Люблю и поработать, особенно поспать )

Аватара пользователя
tAZAR
Не в сети
Модератор
Модератор
Сообщения: 567
Зарегистрирован: Ср июн 23, 2004 8:13
Откуда: г.Шахты

Сообщение tAZAR »

Eraser писал(а):а почему бы не перекрыть конструктор Create и не выполнить код там?
Гы :-)
Мы тут отмечали новый год корпоративно :-) Вот, что водка с людьми делает :-) Башка ваще не работала...
За два дня не допер :-) Хотя в параллельном проекте на с++ все путем - вот что значит, доведено до автоматизма:-)

Благодарю, развеял туман в моей голове.

Ответить