Приложение с Kylix на Lazarus
Модератор: Модераторы
Приложение с Kylix на Lazarus
Портирую приложение с Kylix на лазарь и не могу разобраться с этим: procedure DrawPlainRect(Canvas: TCanvas; Rect: TRect; Color: TColor;
LineWidth: Integer);
Как это попртировать в лазарь? )))
заранее спасибо за ответы )))
LineWidth: Integer);
Как это попртировать в лазарь? )))
заранее спасибо за ответы )))
Хоть немного кода покажите, а то я Kylix забыл зразу после его появления (другой работой был занят).
Код: Выделить всё
procedure PaintDragRect;
var
R: TRect;
begin
R:= ARect;
R.Right:= ARect.Right + 4;
DrawPlainRect(canvas,R,otInvertColor(gColorPanels),1);
if gShowIconsInPanel then PaintIcon;
end; эта процедурка находится в ListViewCustomDrawItem
зы целиком код можно скачать на сайте bf commander )))
для души разбираюсь )))
Последний раз редактировалось rellai2 07.11.2009 09:11:17, всего редактировалось 1 раз.
Это процедура из QT, она и сейчас существует в измененном виде, но лучше ее не лепить, да и не знаю или получится. А пример сейчас попробую собрать...
Добавлено спустя 9 минут 11 секунд:
Ну, так думаю пойдет:
Добавлено спустя 9 минут 11 секунд:
Ну, так думаю пойдет:
Код: Выделить всё
procedure DrawPlainRect(Canvas: TCanvas; Rect: TRect; Color: TColor;
LineWidth: Integer);
begin
Canvas.Brush.Style := bsClear;
Canvas.Pen.Style := psSolid;
Canvas.Pen.Color := Color;
Canvas.Pen.Width := LineWidth;
Canvas.Rectangle(Rect);
end;
О спасибо огромное!!!
А вот здесь еще подскажи плиз - как исправить?
Может пойму суть )))
А вот здесь еще подскажи плиз - как исправить?
Код: Выделить всё
procedure PaintFocusRect;
var
R: TRect;
begin
R:= ARect;
R.Right:= ARect.Right + 4;
QListViewItem_paintFocus((Item as TListItem).Handle,
Canvas.Handle,self.Palette.ColorGroup(cgActive),@R);
end; Может пойму суть )))
rellai2 писал(а):О спасибо огромное!!!
А вот здесь еще подскажи плиз - как исправить?Код: Выделить всё
procedure PaintFocusRect;
var
R: TRect;
begin
R:= ARect;
R.Right:= ARect.Right + 4;
QListViewItem_paintFocus((Item as TListItem).Handle,
Canvas.Handle,self.Palette.ColorGroup(cgActive),@R);
end;
Может пойму суть )))
Здесь решается все одной строкой, видимо:
Код: Выделить всё
Canvas.DrawFocusRect(R);Операция с переменной R нужна:
Хотя нужно смотреть на работу программы, ведь могут быть некоторые нюансы, не видимые с первого взляда
Добавлено спустя 4 минуты 28 секунд:
Суть в том, что у визуальных компонент есть CANVAS (канва, холст), на котором мы можем рисовать. Названия свойств и методов, там логично определено, в них легко разобраться.
А здесь?)))
я так понял тут производится проверка - вызвано ли контекстное меню...
поискал в нете как это можно реализовать нашел только те что сделаны на winapi... можно ли обойти? сделать средствами лазаруса?
var
IsPopup:boolean;
begin
IsPopup:= ((QApplication_activePopupWidget = pmnuPanel.Handle) or
(QApplication_activePopupWidget = pmnuDrag.Handle) or
(QApplication_activePopupWidget = Application.MainForm.Menu.Items[0].Handle)) and
((SelectList.Count = 1) and (IsSelected(Item as TListItem)));
end;
я так понял тут производится проверка - вызвано ли контекстное меню...
поискал в нете как это можно реализовать нашел только те что сделаны на winapi... можно ли обойти? сделать средствами лазаруса?
Еще вопрос.
Есть ли в Lazarus замена
ListView.isEditing
искал нечто похожее - не нашел, может заменить можно как либо?
Есть ли в Lazarus замена
ListView.isEditing
искал нечто похожее - не нашел, может заменить можно как либо?
- Alexx2000
- постоялец
- Сообщения: 491
- Зарегистрирован: 25.10.2006 00:22:07
- Откуда: Мытищи
- Контактная информация:
rellai2 писал(а):зы целиком код можно скачать на сайте bf commander )))
для души разбираюсь )))
Коммандерами интересуетесь или самим портированием?
Может вас заинтересует этот проект: viewforum.php?f=20
Коммандером интересуюсь ))
Возможно, портирую сейчас, посмотрю на результат портирования ))
этот коммандер мне кажется простым с точки зрения вникания в код ))
К тому же мне его Haword насоветовал ))
Добавлено спустя 45 минут 47 секунд:
QListViewItem_height(Item.Handle);
Как вот это сконвертировать?
(Source as TListView).EndDrag(false);
а вот это?
и вот это еще ))
Qt.QListView_repaintItem(Handle,ItemFocused.Handle);?
Я сделал так ListView.repaint;
ну и под конец
QListView_setSelectionMode(ListView.Handle,QListViewSelectionMode_Single)
else
QListView_setSelectionMode(ListView.Handle,QListViewSelectionMode_NoSelection);
)))
зы надеюсь пост не останется незамеченным ))
Возможно, портирую сейчас, посмотрю на результат портирования ))
этот коммандер мне кажется простым с точки зрения вникания в код ))
К тому же мне его Haword насоветовал ))
Добавлено спустя 45 минут 47 секунд:
QListViewItem_height(Item.Handle);
Как вот это сконвертировать?
(Source as TListView).EndDrag(false);
а вот это?
и вот это еще ))
Qt.QListView_repaintItem(Handle,ItemFocused.Handle);?
Я сделал так ListView.repaint;
ну и под конец
QListView_setSelectionMode(ListView.Handle,QListViewSelectionMode_Single)
else
QListView_setSelectionMode(ListView.Handle,QListViewSelectionMode_NoSelection);
)))
зы надеюсь пост не останется незамеченным ))
Портировал ))))
гыгы ))
доступа к файловой системе как я понял нет ))))
или хз что там с ним )))
гыгы ))
доступа к файловой системе как я понял нет ))))
или хз что там с ним )))
Запустил я это чудо...))
Но беда
Когда собираешь под qt он запускается(пусть и не работает толком))))
Когда собираешь под GTK2 он вылетает с ошибкой деления на ноль....как я понял ошибка вылазит в дебрях биндингов к gtk
Может кто нить посмотреть. И либо ошибку зпростить в багтрекер) либо меня носом ткнуть)))
bfcommander_.zip.html
зы: Собирал в ubuntu 9.10, Lazarus из svn, Freepascal 2.4 RC1
Но беда
Когда собираешь под qt он запускается(пусть и не работает толком))))
Когда собираешь под GTK2 он вылетает с ошибкой деления на ноль....как я понял ошибка вылазит в дебрях биндингов к gtk
Может кто нить посмотреть. И либо ошибку зпростить в багтрекер) либо меня носом ткнуть)))
bfcommander_.zip.html
зы: Собирал в ubuntu 9.10, Lazarus из svn, Freepascal 2.4 RC1
