Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kylix Virtual ListBox

[es] :: Pascal / Delphi / Kylix :: Kylix Virtual ListBox

[ Pregleda: 4076 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jsmith
John Smith
Beograd

Član broj: 8423
Poruke: 105
*.he.net



Profil

icon Kylix Virtual ListBox20.02.2003. u 23:14 - pre 235 meseci
Prenosim deo diskusije sa jednog od Ghisler foruma na temu portovanja Total Commander-a na Linux (!):
_______________________________________________________________________________

Can you tell us exactly which 3rd-party Delphi components are missing under Kylix (with all methods), what are the Win32 API's you're having trouble with under Linux, etc? Maybe some of us would like to help you with the Linux port.

/jsmith
_______________________________________________________________________________

The main problem is that there is no virtual listbox under Linux. A virtual listbox works like this: I just tell the listbox that it is filled with 100'000 lines, and I don't put any data in it. The listbox then calls a callback function for each line, and I draw the lines myself. The Linux-listbox creates an object for each single line(!), which is unfeasible and slow for long files. I need this for the 'compare by contents' function. On Windows, I wrote such a Listbox myself.

It's quite a complex component, directly derived from TWinControl, and uses (reacts to) many Windows messages:

Code:

  procedure wmSetRedraw(var Message:TWMSetredraw); message wm_setredraw;
  procedure wmSetFocus(var Message: TWMSetFocus); message wm_setfocus;
  procedure wmKillFocus(var Message: TWMKillFocus); message wm_killfocus;
  procedure wmKeyDown(var Message: TWMKeydown); message wm_keydown;
  procedure wmChar(var Message: TWMChar); message wm_char;
  procedure wmSize(var Message: TWMSize); message wm_Size;
  procedure WMEraseBkGnd(var Message: TWMEraseBkGnd); Message WM_EraseBkGnd;
  procedure wmPaint(var Message: TWMPaint); message wm_paint;
  procedure wmShowWindow(var Message: TWMShowwindow); message wm_ShowWindow;
  procedure wmRbuttondown(var Message: TWMRButtondown); message wm_Rbuttondown;
  procedure wmRbuttonup(var Message: TWMRButtonUp); message wm_Rbuttonup;
  procedure wmLbuttondown(var Message: TWMLButtonDown); message wm_Lbuttondown;
  procedure wmLbuttonup(var Message: TWMLButtonUp); message wm_Lbuttonup;
  procedure wmGetDlgCode(var Message: TMessage); message wm_GetDlgCode;
  procedure wmVScroll(var Message: TWMScroll); message wm_vscroll;
  procedure wmHScroll(var Message: TWMScroll); message wm_hscroll;
  procedure lbSetSel(var Message: TMessage); message lb_setsel;
  procedure lbGetSel(var Message: TMessage); message lb_getsel;
  procedure lbGetSelItems(var Message: TMessage); message lb_getselitems;
  procedure lbSetCurSel(var Message: TMessage); message lb_setcursel;
  procedure lbGetCurSel(var Message: TMessage); message lb_getcursel;
  procedure lbSetCaretIndex(var Message: TMessage); message lb_SetCaretIndex;
  procedure lbGetCaretIndex(var Message: TMessage); message lb_GetCaretIndex;
  procedure lbSetTopIndex(var Message: TMessage); message lb_SetTopIndex;
  procedure lbGetTopIndex(var Message: TMessage); message lb_GetTopIndex;
  procedure lbGetCount(var Message: TMessage); message lb_getcount;
  procedure lbSetCount(var Message: TMessage); message lb_setcount;
  procedure lbGetSelCount(var Message: TMessage); message lb_GetSelCount;
  procedure lbGetItemHeight(var Message: TMessage); message lb_GetItemHeight;
  procedure lbGetItemRect(var Message: TMessage); message lb_getitemrect;
  procedure lbResetContent(var Message: TMessage); message lb_ResetContent;
  procedure lbSelItemRange(var Message: TMessage); message lb_SelItemRange;
  procedure lbSetColumnWidth(var Message: TMessage); message lb_SetColumnWidth;
  procedure lbAddString(var Message: TMessage); message lb_AddString;
  procedure lbInsertString(var Message: TMessage); message lb_InsertString;
  procedure lbDeleteString(var Message: TMessage); message lb_DeleteString;


Unfortunately messages don't exist on Linux, all is done via callback functions. I have no idea how to port such a component to Linux. Is there any component porting guide available?

_________________
Author of Total Commander
http://www.ghisler.com
_______________________________________________________________________________

Zna li neko da pomogne coveku? Neki link?
Motiv?! Pa, znate vec da na Linux-u nema file manager-a ovog kalibra...

Inace, kompletna diskusija se moze naci na http://ghisler.ch/board/viewtopic.php?p=917.

/jsmith

„Bolje znati mnogo i često, nego ne znati ništa, povremeno... nikad... kojekude!“

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Kylix Virtual ListBox

[ Pregleda: 4076 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.