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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Мерцание ToolBar при перемещении 
V
    Опции темы
Poseidon
Дата 14.5.2013, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



В общем как-то получалось у меня обходить стороной работу с барами. Но вот вдруг понадобилось...

Суть: нужно сделать панель кнопок на подобии той, что в самой среде разработки. 
Вот эту: user posted image
При этом предусмотреть возможность перетягивания и открепления. Т.е. что бы можно было это панель тягать вот в таком виде: user posted image

Приступаем. Кидаю на форму ControlBar. На него кидаю ToolBar. У ToolBar устанавливаю DragMode = dmAutomatic и DragKind = dkDock. В общем все готово. Но вот тут теперь появляется одно НО. При перемещении ToolBar за пределами ControlBar панель мерцает. Как бы пытается перерисоваться. У самой Delphi все тягается плавно и красиво. DoubleBuffered не помогает. Нутром чую что-то где-то нужно включить, но не могу ничего найти.

В общем суть вопроса вот в чем: как заставить ToolBar перемещаться плавно, без заметной перерисовки?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
ZBugz
Дата 15.5.2013, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это у тебя что то не так с системой и т.д. У меня не моргало и не перерарисоввывалось никогда ни в каких версиях.
Дай пример, перекомпелю, проверим.

Это сообщение отредактировал(а) ZBugz - 15.5.2013, 06:10
PM MAIL   Вверх
Alexeis
Дата 15.5.2013, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата (Poseidon)

   DoubleBuffered не помогает. Нутром чую что-то где-то нужно включить, но не могу ничего найти.
   


Проверял что DoubleBuffered стоит у всех компонент, по которым ползает окно? Должно быть у всей цепочки родителей установлено. Как вариант, для теста, можешь сделать окно прозрачным с непрозрачностью 255.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM ICQ Skype   Вверх
Poseidon
Дата 15.5.2013, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(Alexeis @  15.5.2013,  08:25 Найти цитируемый пост)
Проверял что DoubleBuffered стоит у всех компонент, по которым ползает окно?
Эта панелька может и за пределы моей формы вылезти. DoubleBuffered ставлю у ToolBar, у ControlBar и у формы. Не помогает. 

Если перемещать ToolBar в пределах ControlBar, т.е. если панель эта (ToolBar) не открепляется от формы, то все в порядке. А пот если попытаться ее открепить, она становится такой как на втором рисунке, но при перетаскивании мерцает.


Цитата(ZBugz @  15.5.2013,  06:10 Найти цитируемый пост)
Дай пример, перекомпелю, проверим.
Там нет ничего сверх навороченного. Я же описал что и как:
Код

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 299
  ClientWidth = 635
  Color = clBtnFace
  DoubleBuffered = True
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object ControlBar1: TControlBar
    Left = 0
    Top = 0
    Width = 635
    Height = 50
    Align = alTop
    TabOrder = 0
    object ToolBar1: TToolBar
      Left = 11
      Top = 2
      Width = 294
      Height = 22
      Caption = 'ToolBar1'
      DragKind = dkDock
      DragMode = dmAutomatic
      TabOrder = 0
    end
  end
end




--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
northener
Дата 15.5.2013, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



У меня так вообще при перетаскивании показывается только рамка. Д2007 


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Poseidon
Дата 15.5.2013, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Во-во, рамка. Да еще и эта рамке не приятно мерцает. Но при этом в самой Delphi все красиво тягается.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
ZBugz
Дата 15.5.2013, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Poseidon @ 15.5.2013,  16:24)
Во-во, рамка. Да еще и эта рамке не приятно мерцает. Но при этом в самой Delphi все красиво тягается.

Проверил, delphi XE4, windows 8 pro, тоже мерцает...  smile 

Это сообщение отредактировал(а) ZBugz - 15.5.2013, 17:18
PM MAIL   Вверх
northener
Дата 15.5.2013, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(Poseidon @  15.5.2013,  16:24 Найти цитируемый пост)
 Да еще и эта рамке не приятно мерцает.

Не мерцает вообще. WinXP


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Poseidon
Дата 15.5.2013, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Может на ХР и не мерцает, но тягается рамка, а хочется что бы тягалась именно панелька. С этой рамкой все совсем не профессионально выглядит. 


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
northener
Дата 16.5.2013, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(Poseidon @  15.5.2013,  18:23 Найти цитируемый пост)
но тягается рамка, а хочется что бы тягалась именно панелька.

На своей Д2007 не нашел возможности такое реализовать. 
Хотя в IDE Дельфи такое действительно реализовано. Где и куда копать навскидку не понятно.

Это сообщение отредактировал(а) northener - 16.5.2013, 01:08


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Alexeis
Дата 16.5.2013, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Я думаю там настроен кастомный Drag&Drop типа такого
Код

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
  if Source is TToolBar
  then
    begin
      (Source as TToolBar).Left   := x;
      (Source as TToolBar).top    := y;
    end;
end;

procedure TForm1.ToolBar1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft
  then
    begin
      ToolBar1.BeginDrag(false, 2);
      ToolBar1.Parent := Form1;
    end;
end;


Этот ответ добавлен с нового Винграда - http://vingrad.com
PM ICQ Skype   Вверх
Akella
Дата 16.5.2013, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



TActionToolBar
TActionMainMenuBar



TActionManager
user posted image




Добавлено @ 16:07
Я бы порекомендовал использовать TdxBarManager от Developer Express, но это уже отдельная исптория. Там много чего есть искаропки, как говорится. Как минимум, настройка, перетаскивание, сохранение и восстановление. Очень удобно.
PM MAIL   Вверх
Poseidon
Дата 16.5.2013, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(Akella @  16.5.2013,  16:05 Найти цитируемый пост)
TActionToolBar
Вот жеж ёжик smile TActionToolBar действительно тягается как положено. Спасибо Akella

Цитата(Akella @  16.5.2013,  16:05 Найти цитируемый пост)
Я бы порекомендовал использовать TdxBarManager от Developer Express
Тут задача в использовании только стандартных компонентов. IDE ведь не использует DevExpress. Хотелось понять "как это у них получилось". А тут вот оно как, ход конем smile


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Akella
Дата 16.5.2013, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



но будь готов, что эти стандартные экшнбары подглючивают :(
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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