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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TreeView 
:(
    Опции темы
Гость_qwerty
Дата 1.7.2004, 08:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Есть написанный мной компонент типа treeview, но есть маленькая проблема...
связи отрисовываются по таймеру и моргают иногда....
как избежать этого ???
  Вверх
<Spawn>
Дата 1.7.2004, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Зачем рисовать по таймеру? Нужно рисовать по WM_PAINT


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Гость_qwerty
Дата 1.7.2004, 13:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











мона по подробнее, плиз
  Вверх
<Spawn>
Дата 1.7.2004, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Сначала скажи как ты создал дерево? Унаследовал от TTreeView? Тогда тебе нужно искать метод класса который вызывается при перерисовке контрола и перекрывать его. Либо написать что то типа этого:

Код
TMyTreeView=class(TTreeView)
 private
   procedrue WMPaint(var Msg: TMessage); message WM_PAINT;
 <остальное определение твоего класса>
end;

procedure TMyTreeView.WMPaint(var Msg: TMessage);
begin
 inherited WMPaint;
 <рисуешь чего то тут>
end;


Это сообщение отредактировал(а) <Spawn> - 1.7.2004, 13:58


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Гость_qwerty
Дата 1.7.2004, 14:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











дерево наследовано от scrollbox'a остальное с нуля, treeview принципиально не подходит
Этот код я уже понял как писать, н овсе равно пасиб...
вопрос другой.....

inherited WMPaint;

пишет неопределена переменная?????
  Вверх
<Spawn>
Дата 1.7.2004, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



оЧепЯтался я smile.gif Напиши, либо
Код
inherited;

либо
Код
inherited WMPaint(Msg);


Это одно и то же.
Добавлено @ 14:13
Я глянул исходники - метод который вызвается при перерисовке называется PaintHandler и он помещен защищенной секции, так что тебе лучше его перекрывать.

Код
procedure TMyTreeView.PaintHandler(...);
begin
 inherited;
end;


Это сообщение отредактировал(а) <Spawn> - 1.7.2004, 14:13


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Гость_qwerty
Дата 1.7.2004, 14:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











он статический, как его перекрыть?
  Вверх
<Spawn>
Дата 1.7.2004, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Так же как и виртуальныйsmile.gif)

Код
TMyTreeView = class(TScrollBox)
protected
 procedure PaintHandler();
...
end;

procedure TMyTreeView.PaintHandler(...);
begin
inherited;
 <твое рисование>
end;


Это сообщение отредактировал(а) <Spawn> - 1.7.2004, 14:31


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Гость_qwerty
Дата 1.7.2004, 14:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











вообще не срабатывает...
а по WM_Paint только в момент изменения размера компонента на форме
  Вверх
<Spawn>
Дата 1.7.2004, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Ты для PaintHandler параметры то прописал?
Добавлено @ 14:38
Код
procedure TMyTreeView.PaintHandler(var Message: TWMPaint);



--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Гость_qwerty
Дата 1.7.2004, 14:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











само собой
  Вверх
<Spawn>
Дата 1.7.2004, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Должно рисоваться. Покажи как рисуешь, если твой код не секретныйsmile.gif


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Гость_qwerty
Дата 1.7.2004, 15:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











TmyTree = class(TScrollBox)
procedure PaintHandler(var Message: TWMPaint); // объявление

procedure TmyTree.PaintHandler(var Message: TWMPaint);
begin
inherited;
Lines(Self); - рисую на прицепленной канве
end;

procedure TmyTree.Lines(Sender: TObject);
begin
//очищаю от старого

//рисую новые связи
end;

в дереве помимо рисование на канве еще отображаются компоненты
  Вверх
Гость_qwerty
Дата 1.7.2004, 15:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











procedure PaintHandler(var Message: TWMPaint); override - так не прокатит ругается
  Вверх
<Spawn>
Дата 1.7.2004, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



PaintHandler не совсем то что нужноsmile.gif
Вот я примерчик набросал с WM_PAINT

Код
 TMyScrollBox = class(TScrollBox)
 private
   FCanvas: TCanvas;
   procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
 protected
   procedure CreateWnd; override;
 public
   destructor Destroy; override;
 end;

procedure TMyScrollBox.CreateWnd;
begin
 inherited;
 FCanvas := TCanvas.Create;
 FCanvas.Handle := GetDC(Handle);
end;

destructor TMyScrollBox.Destroy;
begin
 FreeAndNil(FCanvas);
 inherited;
end;

procedure TMyScrollBox.WMPaint(var Message: TWMPaint);
begin
 inherited;
 with FCanvas do
 begin
   Pen.Color := clRed;
   MoveTo(10, 10);
   LineTo(40, 60);
   Ellipse(Rect(10, 10, 100, 100));
 end;
end;



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

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

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

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

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


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

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


 




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


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

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