17:13

in the porn when i was born sky is blue and see is green
[ok]

Добрый день.
Имеется компонент DBGrid в Delphi 7. Как изменить в нем ширину колонок таким образом, чтобы она не возвращалась к стандартным настройкам. Есть какое-то свойство (не увидел, просмотрев список свойств, ничего похожего)? Запускаю программу - неудобно, меняю ширину, выхожу. Запускаю по новой - ширина опять стандартная.

@темы: Программирование

Комментарии
21.05.2009 в 17:18

сразу после запуска по дефолту там ширина зависит от самого поля, насколько я помню
свойства "сохранять ширину колонок" быть не может, т.к. эту ширину надо куда-то сохранять

я в своё время просто выставлял ширину в коде, но наверняка все эти параметры можно как-нибудь сериализовать в переменную и сохранить в файл, а при запуске загружать
21.05.2009 в 17:26

in the porn when i was born sky is blue and see is green
Enkryptor, так... а поподробней можно? как в коде выставить ширину, к примеру
21.05.2009 в 17:31

¡ʎuunɟ ʇou sı sıɥʇ
В Борланд Си это выглядит вот так:

Form1->DBGrid1->Width = 100;
21.05.2009 в 17:37

All you need is love
Только ширина не грида, а столбца
21.05.2009 в 17:39

in the porn when i was born sky is blue and see is green
Foul thing, а мне бы в Делфи....

когда я в делфи описываю этот самый DBGrid (у меня он называется "DBGrid9APN"), я пишу в type "DBGrid9APN: TDBGrid;". Компилирую: "[Error] Unit3.pas(19): Identifier redeclared: 'DBGrid9APN'". как написать правильно?
21.05.2009 в 17:40

он уже должен быть описан в коде, если был создан в визуальном редакторе.
поэтому тебе и пишут "Identifier redeclared", т.е. "имя уже было задано"

я тоже делал в C++Builder
в Delphi по идее синтаксис задания свойств такой же, только через точку — Form1.DBGrid1.Width := 100
21.05.2009 в 17:43

как в коде выставить ширину

Так же, как и свойство у любого объекта в Delphi. Ты собираешься сделать программу, не написав ни строчки?
21.05.2009 в 17:58

in the porn when i was born sky is blue and see is green
Enkryptor, уже не надеюсь xD спросил потому, что не знаю. вот и все )

насчет синтаксиса: я вставил Form1.DBGrid1.Width := 100, а получил это [Error] Unit3.pas(46): Declaration expected but identifier 'Form3' found. не подскажете, что это может означать? форма найдена, а описание отсутствует? иии...как с этим бороться?
21.05.2009 в 18:04

¡ʎuunɟ ʇou sı sıɥʇ
Ну блин. Форм1, ДБГрид1 - это дефолтные названия объектов в Си. Тебе нужно прописать вместо них свои объекты. Если форма называется форм3, то пиши

Form3.DBGrid9APN.Width - как-то так. Вообще, после того, как ставишь точку, он должен выбрасывать выпадающий список всего, что можно туда подставить.
21.05.2009 в 18:08

in the porn when i was born sky is blue and see is green
Foul thing, ну понятно, я свои и прописал. а после точки ничего не выбрасывает.
21.05.2009 в 18:22

насчет синтаксиса: я вставил Form1.DBGrid1.Width := 100, а получил это [Error] Unit3.pas(46): Declaration expected but identifier 'Form3' found.

покажи код целиком, или хотя бы несколько строчек до
21.05.2009 в 18:23

in the porn when i was born sky is blue and see is green
Enkryptor, код целиком
21.05.2009 в 18:27

¡ʎuunɟ ʇou sı sıɥʇ
Фиг знает, где тут конструктор формы. Для начала добавть еще кнопку, к ней прикрути код

procedure TForm3.Button3Click(Sender: TObject);
begin
Form3.DBGrid9APN.Width := 100;
end;
21.05.2009 в 18:30

in the porn when i was born sky is blue and see is green
Foul thing, ок... а ты имел ввиду FormCreate?
ввел в foomcreate - заработало..но изменило ширину самого дбгрида... а как сделать столбца?
21.05.2009 в 18:37

¡ʎuunɟ ʇou sı sıɥʇ
Хм. Я не очень представляю, что такое форм криэйт в масштабах дельфи. В Си Билдере - есть такое событие, OnFormCreate, туда можно вписывать код для исполнения при создании формы. Кроме того, есть конструктор формы, он изначально пуст, но там тоже можно помещать код, который выполнится при создании формы.

Как это работает в дельфи, я не знаю.

Так что там с кнопкой? Отрабатывает?
21.05.2009 в 18:37

Form3.DBGrid9APN.Width := 100; не должна быть в разделе implementation, её нужно ставить в одну из процедур

советую почитать гугл и учебник про Дельфи



изменило ширину самого дбгрида... а как сделать столбца?

DBGrid.Columns[i].Width
21.05.2009 в 18:41

All you need is love
Блин... А почитать что-нибудь по предмету не пробовали? Итак, у нас есть объект DBGrid9APN типа TDBGrid. У него есть столбцы - Columns. Это массив столбцов таблицы. Обращаются к ним по индексу, как и к любому другому элементу любого другого массива. У каждого элемента массива Columns есть свойство width типа integer. Теперь, если Вы хоть немного подумаете головой, код напишется сам
21.05.2009 в 18:43

in the porn when i was born sky is blue and see is green
Foul thing, я не стал делать кнопку, сделал сразу в форм.криэйт... в общем-то, я тоже слабо приедстваляю, как это - но оно работало.
Enkryptor, в i - количество колонок или номер текущей колонки, которой надо изменить ширину?
21.05.2009 в 18:45

All you need is love
Увы, думать либо лень, либо нечем :-(
21.05.2009 в 18:46

¡ʎuunɟ ʇou sı sıɥʇ
В i - номер колонки, начиная с нуля. Для всех, видимо, придется менять в цикле.
21.05.2009 в 18:52

Enkryptor, в i - количество колонок или номер текущей колонки, которой надо изменить ширину?

Иногда полезно сначала подумать над вариантами. Если бы это было количество колонок, то ширину какой колонки, по-твоему, должна менять такая команда? И что по твоему было бы, если вместо i указать неверное количество?
21.05.2009 в 18:53

in the porn when i was born sky is blue and see is green
kugelschreiber, воздержитесь, пожалуйста, от личных комментариев и поспешных выводов и попробуйте вообразить себе, что мой комментарий был отправлен раньше, чем я увидел ваш. получилось?

Foul thing, хм... что-то вроде

begin
DBGrid.Columns[1].Width:=100;
DBGrid.Columns[2].Width:=100;
...
DBGrid.Columns[n].Width:=100
end;

да?
21.05.2009 в 19:00

¡ʎuunɟ ʇou sı sıɥʇ
что-то вроде

var i : integer;
for i:=0 to DBGrid.Columns.Count do
begin

DBGrid[i].Width:=100;

end;
21.05.2009 в 19:06

in the porn when i was born sky is blue and see is green
Foul thing, спасибо большое. вы мне очень помогли.
21.05.2009 в 20:04

All you need is love


И ширина ни одного столбца не изменится. Мало того, это не скомпилируется. Компилятор Вам заявит, что DBGrid - не массив и пошлет искать ошибку
21.05.2009 в 20:15

¡ʎuunɟ ʇou sı sıɥʇ
Ага, наврал я. Вот рабочий сишный код:

for(int i = 0;iDBGrid1->Columns->Count;i++)
{
Form1->DBGrid1->Columns->Items[i]->Width = 100;
}

Для паскаля, соответственно, что-то вроде

var i : integer;
for i:=0 to DBGrid.Columns.Count do
begin

Form1.DBGrid.Columns.Items[i].Width = 100;

end;
21.05.2009 в 20:18

in the porn when i was born sky is blue and see is green
Foul thing, спасибо. разберусь с этим завтра - а то уже голова не варит )
21.05.2009 в 20:39

All you need is love
:lol:
22.05.2009 в 00:30

In Soviet Russia arrays program YOU!!

школьники-быдлокодеры настолько суровы, что даже капитан О не находит слов