Главная страница
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.048 c
4-58967
Bless
2003-07-14 15:50
2003.09.18
редактирование TreeNode.Text


6-58823
Дрын
2003-07-18 08:34
2003.09.18
Работа с файлами по локальной сети


14-58880
Александр из Минска
2003-08-28 19:59
2003.09.18
СРОЧНО НАДО ИСПРАВИТЬ


14-58857
Pindos
2003-08-30 20:17
2003.09.18
У меня на компе обнаружен Троян!!!


6-58817
Akni
2003-07-14 17:54
2003.09.18
Как правильно отсоединить клиента?