Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.015 c
1-58744
Dlin
2003-09-06 18:58
2003.09.18
Без формы


1-58650
vvz
2003-09-05 06:17
2003.09.18
Распространение приложений


3-58570
P0tia
2003-08-27 12:11
2003.09.18
Количество строк


7-58937
Spawn
2003-07-05 12:01
2003.09.18
Изучаю PE заголовок...


4-58973
DimaS
2003-07-17 13:44
2003.09.18
У меня есть строка пути к файлу с параметрами, как ее запустить