Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка Invalid typecast, И указатели на ячейки массивов 
:(
    Опции темы
WaterProof
Дата 25.3.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


OverLapped



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 13.10.2006
Где: Москва

Репутация: нет
Всего: нет



Могу ли я хранить в свойстве Node.DATA указатели на какую-либо ячейку массива?
И если можно хранить, то как потом обращаться к этой ячейке?
Я использую такой код:
Код

iteminfo := Node.Data^; // пробовал и без ^, не получается
Pagecontrol.ActivePage := TTabsheet(ItemInfo.tabSheet);

В свойстве Tabsheet хранится указатель на какой нибудь табшит, TItemInfo - запись из tabshett, richedit:pointer.
Есть массив mas:TMas, где TMas - массив TItemInfo.
Мне как раз нужно связать свойство DATA с ячейкой такого массива.....
PM MAIL ICQ   Вверх
VICTAR
Дата 25.3.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



Что-нибудь типа этого?
Код

PItemInfo = ^TItemInfo;
TItemInfo = record
   tabSheet: TTabsheet;
   RichEdit: TRichEdit;
end;
...
TMas: array of PItemInfo;
...
TreeView1.Items[0].Data:=TMas[0];

PM MAIL   Вверх
WaterProof
Дата 25.3.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


OverLapped



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 13.10.2006
Где: Москва

Репутация: нет
Всего: нет



Если я правильно поянл, то да...
PM MAIL ICQ   Вверх
VICTAR
Дата 25.3.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



Хотя врядли так будет работать...
PM MAIL   Вверх
WaterProof
Дата 25.3.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


OverLapped



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 13.10.2006
Где: Москва

Репутация: нет
Всего: нет



Кроче говоря, можно к примеру привязать к DATA указатель на табшит, и тогда в pagecontrol можно переключаться на табшит, указанный в DATA. 
Мне нужно засунуть туда два указателя... То есть свзяать Node с Tabsheet, и ричедитом...

Это сообщение отредактировал(а) WaterProof - 25.3.2007, 15:47
PM MAIL ICQ   Вверх
VICTAR
Дата 25.3.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



Не, работает smile

Цитата

Кроче говоря, можно к примеру привязать к DATA указатель на табшит, и тогда в pagecontrol можно переключаться на табшит, указанный в DATA. 
Мне нужно засунуть туда два указателя... То есть свзяать Node с Tabsheet, и ричедитом...


Попробуй объяснить еще разок...

Это сообщение отредактировал(а) VICTAR - 25.3.2007, 15:56
PM MAIL   Вверх
WaterProof
Дата 25.3.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


OverLapped



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 13.10.2006
Где: Москва

Репутация: нет
Всего: нет



Я понимаю, что работает, но собственно, как обращаться к свойствам ячейки массива, через свйоство DATA??  smile  Вот это для меня ваще лес дремучий....

Добавлено через 9 минут и 45 секунд

Поехали. 
К примеру, связываем Data и tabshett:
Node.data := tabshett;
Используем:
PageControl.activePage :=TTabsheet(Node.DATA);
В pagecontrol отображается табшит, связанный с нодом.
Что требуется мне: я создаю структуру TItemInfo:
Код

type
 TItemInfo = record
          tabSheet, RichEdit:pointer;

В свойствах я буду хранить указатели на ричедит и табшит(табшит понятно для чего, а на ричедит - чтобы впоследствии, проходя обычным циклом по дереву, я мог бы сохранить текст этого ричедита в файл, соотв. пути в дереве).
Вот такую структуру я должен привязать к КАЖДОМУ из нодов. Для этого я просто делаю обычный или динамический массив, и ПЫТАЮСЬ прикрепить указатели на ячейки массива к свойству DATA.... и вот тут возникают вышеописанные проблемы.....
Фуууух...

Это сообщение отредактировал(а) WaterProof - 25.3.2007, 16:07
PM MAIL ICQ   Вверх
VICTAR
Дата 25.3.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



Может тебе это поможет.
Объясни, что ты хочешь сделать. Чтобы у тебя не создавалось одинаковым вкладок на PageControl?

Добавлено через 5 минут и 15 секунд
Так?
Код

PItemInfo = ^TItemInfo;
TItemInfo = record
   tabSheet: TTabsheet;
   RichEdit: TRichEdit;
end;

var
  MainForm  : TMainForm;
  TMas      : array of PItemInfo;
...
procedure TMainForm.TreeView1Change(Sender: TObject; Node: TTreeNode);
var Ts        : TTabsheet;
    RE        : TRichedit;
    iteminfo  : TItemInfo;
    S         : string;
    ANode     : TTreeNode;
    Count     : integer;
begin
if (Node.Data<>nil) then
 begin
  iteminfo := TIteminfo(Node.Data^);
  Pagecontrol.ActivePage := TTabsheet(ItemInfo.tabSheet);
 end
  else
 begin
   Anode := Node;
   S:=ANode.Text;
   while (Anode <> nil)and(ANode.Parent<>nil) do
    begin
     ANode := ANode.Parent;
     S:=S+'\'+ANode.Text;
    end;
   Ts := TTabsheet.Create(Self);
   ts.Caption := Node.Text;
   ts.PageControl := pagecontrol;
   re := TRichedit.Create(mainform);
   re.Parent := ts;
   re.Align := alClient;
   ItemInfo.tabSheet := ts;
   itemInfo.RichEdit := re;
   SetLength(TMas,length(TMas)+1);
   GetMem(TMas[length(TMas)-1], SizeOf(PItemInfo));
   TMas[length(TMas)-1]^:=itemInfo;
   Node.Data:=TMas[length(TMas)-1];
   //Pagecontrol.ActivePage := TTabsheet(ItemInfo.tabSheet);
   //richedit1.hide;
   //re.Lines.LoadFromFile(path+s+'\data.xdf');
 end;
end;


PM MAIL   Вверх
WaterProof
Дата 25.3.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


OverLapped



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 13.10.2006
Где: Москва

Репутация: нет
Всего: нет



Я попробую... И по моему это то, что мне нужно... 

Нет - динаковые вкладки могут быть и скорее всего там будут. Дело не в них... Мне нужен контроль над табшитом и ричедитом(который в этом табшите), чтобы я мог просто получить доступ к ричедиту(нужно для сохранения текста), имея сам нод.  


Работает. СПАСИБО ОГРОМНОЕ!!!! СПАСИБО, VICTAR!!

Это сообщение отредактировал(а) WaterProof - 25.3.2007, 16:36
PM MAIL ICQ   Вверх
VICTAR
Дата 25.3.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



Не за что  smile 
PM MAIL   Вверх
MetalFan
Дата 26.3.2007, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



VICTAR, а зачем в том коде изврат с указателями и GetMem?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
VICTAR
Дата 26.3.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



MetalFan, да честно говоря хз  smile . Просто я долго не мог понять что надо автору... ПС если хочешь - поправь меня, сделай как должно быть в идеале  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0809 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.