![]() |
non-Vcl Programm mit Listbox
Hallo Leute, ich würde gerne ein kleines Hobby-Projekt starten wollen aber mir fehlt da noch etwas Starthilfe.
Ich würde gerne eine non-Vcl Anwendung programmieren mit einer Listbox und einem Knopf. Ein paar informationen zu diesem Thema habe ich auch schon gefunden, so das ich in der Lage bin über eine .res Datei einen Dialog abzurufen der eine Listbox und einen Knopf darstellt. Beispiele um auf den Knopf zu reagieren habe ich auch verstanden und komme damit klar. Aber die Listbox, mit der komme ich nicht klar. Ich würde gerne so etwas in der Art haben wollen: Eine Listbox mit Überschrift aufgeteilt in 2 Columns wo ich in Column 1 ein Icon + "String" ausgebe und Column 2 nur ein "String". Kann mir dabei bitte jemand helfen wie ich das hinbekomme? Ich schaffe es nichtmal einen einzigen Eintrag zu erzeugen. |
AW: non-Vcl Programm mit Listbox
Ich habe es nun umgestellt, von .res direkt in den Hauptcode.
So sieht es bis jetzt aus:
Delphi-Quellcode:
Doch wie fülle ich Listbox, und wie werden daraus 2 Columns?
program DStart;
uses SysUtils, Windows, Messages, ShellApi, Vcl.Dialogs; const ClassName = 'WndClass'; AppName = 'DStart'; WindowWidth = 450; WindowHeight =450; FontName = 'Verdana'; FontSize = -12; const IDC_BUTTON = 1; IDC_LBITEMS = 2; var hWndListBox: DWORD; StdFont: hFont; function WndProc(hWnd: HWND; uMsg: UINT; wParam: wParam; lParam: LParam): lresult; stdcall; var x, y : integer; dwEntriesRead: DWORD; i: integer; begin Result := 0; case uMsg of WM_CREATE: begin x := GetSystemMetrics(SM_CXSCREEN); y := GetSystemMetrics(SM_CYSCREEN); MoveWindow(hWnd, (x div 2) - (WindowWidth div 2), (y div 2) - (WindowHeight div 2), WindowWidth, WindowHeight, true); hWndListBox := CreateWindowEx(WS_EX_CLIENTEDGE, 'ListBox', 'ListBox', WS_VISIBLE or WS_CHILD or LBS_SORT or LBS_STANDARD,150, 75, 180, 100, hWnd, IDC_LBITEMS, hInstance, nil); StdFont := CreateFont(FontSize, 0, 0, 0, 0, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, FontName); if StdFont <> 0 then begin SendMessage(hWndListBox, WM_SETFONT, Integer(StdFont), Integer(true)); end; end; WM_DESTROY: PostQuitMessage(0); WM_COMMAND: begin if hiword(wParam) = BN_CLICKED then case loword(wParam) of IDC_BUTTON: begin // do end; end; end; else Result := DefWindowProc(hWnd, uMsg, wParam, lParam); end; end; var wc: TWndClassEx = ( cbSize : SizeOf(TWndClassEx); Style : CS_HREDRAW or CS_VREDRAW; lpfnWndProc : @WndProc; cbClsExtra : 0; cbWndExtra : 0; hbrBackground : COLOR_BTNFACE+1; lpszMenuName : nil; lpszClassName : ClassName; hIconSm : 0; ); msg: TMsg; begin wc.hInstance := hInstance; wc.hIcon := LoadIcon(hInstance, MAKEINTRESOURCE(100)); wc.hCursor := LoadCursor(0, IDC_ARROW); RegisterClassEx(wc); CreateWindowEx(0, ClassName, AppName, WS_CAPTION or WS_VISIBLE or WS_SYSMENU or WS_MINIMIZEBOX, integer(CW_USEDEFAULT), integer(CW_USEDEFAULT), WindowWidth, WindowHeight, 0, 0, hInstance, nil); while GetMessage(msg,0,0,0) do begin TranslateMessage(msg); DispatchMessage(msg); end; ExitCode := msg.wParam; end. |
AW: non-Vcl Programm mit Listbox
Du willst Colums in einer ListBox erstellen ohne die dafür benötigten Flags zu setzen, wie das?
Delphi-Quellcode:
LBS_NOTIFY or LBS_MULTICOLUMN
Du willst dir das wirklich antun? Such mal im Forum nach dem Link von Luckie's Tutorials Win32 API. gruss |
AW: non-Vcl Programm mit Listbox
Wenn ich irgendwann irgendwo ein Beispiel oder eine Erklärung finde werde ich bestimmt Wissen was Du damit meinst ;)
Ist halt mein erster Versuch was in dieser Richtung zu Unternehmen, obs gut aus geht werd ich bald Wissen. |
AW: non-Vcl Programm mit Listbox
Zitat:
Delphi-Quellcode:
LBS_SORT or LBS_STANDARD = Window Style Flags
hWndListBox := CreateWindowEx(WS_EX_CLIENTEDGE, 'ListBox', 'ListBox',
WS_VISIBLE or WS_CHILD or LBS_SORT or LBS_STANDARD,150, 75, 180, 100, hWnd, IDC_LBITEMS, hInstance, nil); Zu den Windows Stylen addieren? Ohne das setzen des Window Style Flag LBS_MULTICOLUMN kann man keine Columns zu einer ListBox addiern. Aber wie gesagt suche nach den Tutorials von Luckie. gruss |
AW: non-Vcl Programm mit Listbox
Zitat:
Ich beende hier erstmal und lese mich da durch. |
AW: non-Vcl Programm mit Listbox
Ohh mann, das ist doch ganz schön komplex wenn man per Code was mit einer Listbox machen will (bzw generell fast alles).
Da braucht man ja für jede "normale" funktion eine eigene Routine (Items.Add Items.Remove usw) Zitat:
Aber ich komme klar, bin auf den Richtigen Weg und finde es Spanned ein neues Gebiet zu erforschen. Wenn ich mir den Code so anschaue finde ich nach und nach mehr und mehr gefallen an solch eine Art der Programmierung. Mir kommt alles irgendwie logischer und klarer vor da ich gezwungener maßen den kompletten Code aufgedeckt sehe. Noch bin ich ehrlich gesagt vom Tokyo Compiler enttäuscht was die Dateigröße betrifft, aus schlapp 3mb mit VCL macht der non-VCL 2mb. Die Win32 Demos von Luckie sind kleiner als 100kb (was auch eines meiner Ziele ist) wenn die neu Compiliert werden ist keine kleiner als 2mb, da überlege ich was ich falsch mache oder ob Tokyo für so etwas ungeeignet ist. Wenn ich Beschreibungen lese wurde bei Erstellung Delphi 5-7 genommen, kann sich das in +2mb extra Dateigröße auswirken? Ich dachte das gerade bei non-Vcl immer kleine Dateien heraus kommen, vielleicht gibt es ja für Tokyo noch ein Switch der non-Vcl so kompiliert wie das alte Delphi = ganz kleine Dateien. |
AW: non-Vcl Programm mit Listbox
Zitat:
Und da kannst auch nichts dran ändern. Aber sich darüber aufregen bringt nichts. Es ist halt so wie es ist, wir haben doch alle Terrabyte in Masse was zählen da schon ein paar Byte mehr oder weniger. Wegwerfgesellschaft halt. Zitat:
Zitat:
Die meisten wissen aber gar nicht was sich alles dahinter verbirgt. erstelle das OwnerDraw ListView nur mit API mitteln dann weist du was du getan hast. 50KB > 1700 Zeilen. gruss |
AW: non-Vcl Programm mit Listbox
Zitat:
Zitat:
Zitat:
Zitat:
Ich werde das gleich mal mit Luckies coolen Beispielen testen, alter Delphi Build mit kleiner .exe gegen exakt gleiches Projekt mit Tokyo compiliert, mal schauen ob das beim Laden einen Messbaren Unterschied ergibt. Zitat:
Aber zum erlernen was eine Komponente so alles kann um es dann per runtime umzusetzen, das mache ich schon so. Zitat:
Das übersteigt meine Grenzen bei weitem, ich bin schon happy wenn ich es generell erstmal gebacken bekomme, aber vs Deine Deluxe-Listbox, so mit "alles selfmade GFX"+"special shiny FX"+was auch immer die noch so kann wenn man Sie bedient, dagegen stink ich zu 100% ab :) edit Zitat:
|
AW: non-Vcl Programm mit Listbox
Zitat:
Zitat:
Zitat:
gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz