Приложение с Kylix на Lazarus

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Приложение с Kylix на Lazarus

Сообщение rellai2 » 07.11.2009 02:37:20

Портирую приложение с Kylix на лазарь и не могу разобраться с этим: procedure DrawPlainRect(Canvas: TCanvas; Rect: TRect; Color: TColor;
LineWidth: Integer);
Как это попртировать в лазарь? )))

заранее спасибо за ответы )))
rellai2
постоялец
 
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45

Re: Приложение с Kylix на Lazarus

Сообщение Logo » 07.11.2009 02:43:00

Хоть немного кода покажите, а то я Kylix забыл зразу после его появления (другой работой был занят).
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Приложение с Kylix на Lazarus

Сообщение rellai2 » 07.11.2009 02:46:34

Код: Выделить всё
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 10:11:17, всего редактировалось 1 раз.
rellai2
постоялец
 
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45

Re: Приложение с Kylix на Lazarus

Сообщение Logo » 07.11.2009 02:54:55

Это процедура из QT, она и сейчас существует в измененном виде, но лучше ее не лепить, да и не знаю или получится. А пример сейчас попробую собрать...

Добавлено спустя 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;
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Приложение с Kylix на Lazarus

Сообщение rellai2 » 07.11.2009 10:10:40

О спасибо огромное!!!
А вот здесь еще подскажи плиз - как исправить?
Код: Выделить всё
  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
постоялец
 
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45

Re: Приложение с Kylix на Lazarus

Сообщение Logo » 07.11.2009 16:36:04

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 (канва, холст), на котором мы можем рисовать. Названия свойств и методов, там логично определено, в них легко разобраться.
Logo
постоялец
 
Сообщения: 464
Зарегистрирован: 20.08.2008 01:00:47

Re: Приложение с Kylix на Lazarus

Сообщение rellai2 » 08.11.2009 01:10:41

А здесь?)))
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... можно ли обойти? сделать средствами лазаруса?
rellai2
постоялец
 
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45

Re: Приложение с Kylix на Lazarus

Сообщение rellai2 » 12.11.2009 10:00:42

Еще вопрос.
Есть ли в Lazarus замена
ListView.isEditing
искал нечто похожее - не нашел, может заменить можно как либо?
rellai2
постоялец
 
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45

Re: Приложение с Kylix на Lazarus

Сообщение Alexx2000 » 12.11.2009 16:19:35

rellai2 писал(а):зы целиком код можно скачать на сайте bf commander )))
для души разбираюсь )))

Коммандерами интересуетесь или самим портированием?
Может вас заинтересует этот проект: viewforum.php?f=20
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 488
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Re: Приложение с Kylix на Lazarus

Сообщение rellai2 » 12.11.2009 22:50:36

Коммандером интересуюсь ))
Возможно, портирую сейчас, посмотрю на результат портирования ))
этот коммандер мне кажется простым с точки зрения вникания в код ))
К тому же мне его 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);

)))
зы надеюсь пост не останется незамеченным ))
rellai2
постоялец
 
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45

Re: Приложение с Kylix на Lazarus

Сообщение rellai2 » 15.11.2009 02:48:48

Портировал ))))
гыгы ))
доступа к файловой системе как я понял нет ))))
или хз что там с ним )))
rellai2
постоялец
 
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45

Re: Приложение с Kylix на Lazarus

Сообщение rellai2 » 20.11.2009 09:23:35

Запустил я это чудо...))
Но беда
Когда собираешь под qt он запускается(пусть и не работает толком))))
Когда собираешь под GTK2 он вылетает с ошибкой деления на ноль....как я понял ошибка вылазит в дебрях биндингов к gtk
Может кто нить посмотреть. И либо ошибку зпростить в багтрекер) либо меня носом ткнуть)))
bfcommander_.zip.html
зы: Собирал в ubuntu 9.10, Lazarus из svn, Freepascal 2.4 RC1
rellai2
постоялец
 
Сообщения: 135
Зарегистрирован: 18.09.2008 11:37:45


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26

Рейтинг@Mail.ru