Текущий архив: 2003.09.18;
Скачать: CL | DM;
ВнизПочему не работает? Найти похожие ветки
← →
mfender (2003-09-05 16:59) [0]begin
with Form do
begin
with TCustomDBGrid(Keys.Strings[n]) do
begin
Color:=StringToColor(DataStr.Strings[1]);
for o:=0 to StrToInt(DataStr.Strings[2])-1 do
begin
Columns[o].Width:=StrToInt(DataStr.Strings[o+3]);
end;
end;
end;
Хотелось бы, чтобы изменялся цвет TCustomDBGrid. В результате меняется цвет формы. По той же причине возникает ИС "Accept violation", видимо по причине отсутствя у TForm Columns.
В чем же порча?
← →
MBo (2003-09-05 17:01) [1]>TCustomDBGrid(Keys.Strings[n])
поясни
← →
Calm (2003-09-05 17:03) [2]Конфлик имен, инициированный излишней любовью к опрератору with.
Видимо, что компилятор использует первое найденное свойство с именем Color.
А вот AV получается, скорее всего, потому, что Keys.Strings[n] вовсе не TCustomDBGrid
← →
me (2003-09-05 17:11) [3]2mfender (05.09.03 16:59)
1) Компилятор не видит св-ва TCustomDBGrid.Color - оно protected,
и берёт то, которое видит, т.е. TForm.Color
(я тебе уже, кажется, уже объяснял, что нужно в этом случае делать)
2) Я, конечно не знаю, что у тебя за Keys и
как организованы твои гриды, но ты случайно не
Keys.Objects[n]
имел ввиду?
← →
mfender (2003-09-05 17:12) [4]А вот AV получается, скорее всего, потому, что Keys.Strings[n] вовсе не TCustomDBGrid
Вот я и думаю, как тут правильно сделать. Keys.Strings[n] - это имя компонента. Я таким образом пытаюсь обозначить, что
Form.TCustomDBGrid(name).Color:= -----
Form.TCustomDBGrid(name).Columns[o].Width:=----
Я что-то не правильно делаю? Сейчас это особенно остро почувствовалось.
У меня жопыта нет, да и тройничный нерв воспалился - смотреть больно, не то что думать.
← →
me (2003-09-05 17:17) [5]тогда
with {Form.}FindComponent(Keys.Strings[n]) as THackCustomDBGrid do
...
PS Чего-чего у тебя нет???
← →
ZEE (2003-09-05 17:19) [6]TCustomDBGrid(FindComponent(Keys.Strings[n])).Color:=
mfender - иногда и отдых полезен...
← →
mfender (2003-09-05 17:22) [7]Компилятор не видит св-ва TCustomDBGrid.Color - оно protected,
и берёт то, которое видит, т.е. TForm.Color
(я тебе уже, кажется, уже объяснял, что нужно в этом случае делать)
Я так и сделал. THackCustomDBGrid = class TCustomDBGrid;
Это там сработало. Спасибо.
Я, конечно не знаю, что у тебя за Keys и
как организованы твои гриды,
[Form1]
DBGrid1=10 clWindow 4 95 64 28 64
Дык, в том-то и беда. Keys - ключи из ini-файла. Я просто прочитываю секцию из ini в Keys & Values, потом вот вынимаю из Values нужные значения и ставлю их куда следует.
Имя секции - имя формы. Ключ строки - имя компонента. Строка значения - массив, разделенный пробелами. В нем первое значение (здесь 10) по моей классификации означает, что это. В приведенном случае - это TCustomDBGrid. Далее следуют значения цвета(clWindow), количество колонок в гриде(4) и ширина каждой из колонок.
← →
mfender (2003-09-05 17:25) [8]Чего-чего у тебя нет???
Опыта у меня ж нет. Опечаточка была. ;)
← →
mfender (2003-09-05 17:40) [9]Получилось. Правда не с TCustomDBGrid, а как раз-таки с наследником, т.н. THackCustomDBGrid:
TmfCustomDBGrid(FindComponent(Keys.Strings[n])).Columns[o].Width:=S trToInt(DataStr.Strings[o+3]);
Объясните, пожалуйста, зачем требуется объявить THackCustomDBGrid = class (TCustomDBGrid). А то слепо пользоваться не охота. Хочется знать, чтобы в следующий раз воспользоываться этим. Заранее благодарен.
Страницы: 1 вся ветка
Текущий архив: 2003.09.18;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.009 c