Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
14-58911
Карлсон
2003-08-28 19:17
2003.09.18
лето подходит к концу.


7-58932
ionv
2003-07-07 08:09
2003.09.18
Объясните пожалуйста как работать с ZLPortIO или DirectPort


1-58695
MadGhost
2003-09-07 13:38
2003.09.18
Delphi и WinAPI, общие вопросы.


7-58927
MakNik
2003-07-07 11:02
2003.09.18
sheduler


4-58965
Anisimov
2003-07-16 12:27
2003.09.18
Как отловить запись файлов на дискету?




   Наверх