Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите новичку (насчет ТриВью и процедур)


Perf2k2 ©   (2005-10-14 12:53:00) 

Привет всем.

При создании формы вызываю процедуру:

procedure TfrmMain.FormCreate(Sender: TObject);
begin

 TreeView_DrawElements;

end;


Код TreeView_DrawElements:

procedure TreeView_DrawElements();
begin

 // Создаем древо
 frmMain.TreeView1.Items.Clear;

 frmMain.TreeView1.Items.Add(nil,'Приветствие');
 frmMain.TreeView1.Items.Item[0].ImageIndex:=1;
 frmMain.TreeView1.Items.Item[0].SelectedIndex:=1;
 frmMain.TreeView1.Items.Item[0].StateIndex:=100;

 frmMain.TreeView1.Items.Add(nil,'Дела юридического отдела');
 frmMain.TreeView1.Items.Item[1].StateIndex:=200;
   
   // Вот здесь выдает ошибку Undeclared identifier: 'TreeView1' и Missing operator or semicolon
   frmMain.TreeView1.Items.AddChild(TreeView1.Items.Item[1],'В производстве');
   frmMain.TreeView1.Items.Item[2].ImageIndex:=2;
   frmMain.TreeView1.Items.Item[2].SelectedIndex:=2;
   frmMain.TreeView1.Items.Item[2].StateIndex:=210;


Подскажите почему он именно на этой строке ошибку пишет, ведь до этого в процедуре тоже есть ссылка на ТриВью и все нормально.


Perf2k2   (2005-10-14 14:14:00) [1]

> я так понимаю, что ты решил сориентироваться в Делфи методом научного тыка ?)
:)) У меня по-другому не получается... Нет, я конечно подчерпнул некие полезные вещи из книги, но вот именно процесс впихивания своих процедур в программу там как-то странно описан )

И вообще по логике вещей он ни на что ругаться не должен. Никаких параметров в функцию передавать не надо, все имена правильно написано. Чего этому Делфи еще нужно для счастья? Вообще после ВБ какой-то очень странный язык :)


Digitman   (2005-10-14 13:43:00) [2]


> Perf2k2


я так понимаю, что ты решил сориентироваться в Делфи методом научного тыка ?)


Perf2k2   (2005-10-14 13:36:00) [3]

>  Врёшь, в таком случае компилятор говорит
Ну в общем да, именно так он и говорил :)

Я поменял как ты указал, вот только теперь он говорит
[Error] Unit1.pas(50): Unsatisfied forward or external declaration: 'TfrmMain.TreeView_DrawElements'

Что за потепня... И выдает сообщение Expected '=' but '(' found

   procedure TreeView1Click(Sender: TObject);
   procedure mnuFileExitClick(Sender: TObject);
   procedure btnSearchClick(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure TfrmMain.TreeView_DrawElements();
   procedure cbFIOClick(Sender: TObject);
   procedure cbSKClick(Sender: TObject);
   procedure cbAvtoClick(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);


Плохиш   (2005-10-14 13:17:00) [4]


> Perf2k2   (14.10.05 13:07) [5]
> > Сделай TreeView_DrawElements методом формы TfrmMain
> А можно по-подробней? Она у меня объявлена в type:

Врёшь, в таком случае компилятор говорит, что procedure TreeView_DrawElements(); не имеет реализации. Или строка
procedure TreeView_DrawElements();
выглядит как
procedure TfrmMain.TreeView_DrawElements();

Использование абстрактной переменной frmMainв методах класса является потенциальным местом бага.

PS. Начни программирование в делфи с покупки и прочтения книги по теме.


Perf2k2   (2005-10-14 13:07:00) [5]

> а в целом - код, мягко говоря,  оставляет желать лучшего.

Ну так второй день за Делфями, перешал с ВБ :) Подскажите что не так - буду рад перенять опыт профессионалов.

> Сделай TreeView_DrawElements методом формы TfrmMain
А можно по-подробней? Она у меня объявлена в type:

   procedure TreeView1Click(Sender: TObject);
   procedure mnuFileExitClick(Sender: TObject);
   procedure btnSearchClick(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure TreeView_DrawElements();
   procedure cbFIOClick(Sender: TObject);
   procedure cbSKClick(Sender: TObject);
   procedure cbAvtoClick(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);


Digitman   (2005-10-14 13:05:00) [6]

frmMain.TreeView1.Items.AddChild( frmMain.TreeView1.Items.Item[1], 'В производстве');

а в целом - код, мягко говоря,  оставляет желать лучшего.


Perf2k2   (2005-10-14 13:04:00) [7]

Во блин, это моя невнимательность. Спаисбо.


Плохиш   (2005-10-14 13:04:00) [8]

Глюкокод :-(

Сделай TreeView_DrawElements методом формы TfrmMain


Плохиш   (2005-10-14 13:03:00) [9]


> frmMain.TreeView1.Items.AddChild( TreeView1.Items


Наверх

Титульная страница Поиск, карта сайта Написать письмо