AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

non-Vcl Programm mit Listbox

Ein Thema von KodeZwerg · begonnen am 14. Mai 2018 · letzter Beitrag vom 17. Mai 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

non-Vcl Programm mit Listbox

  Alt 14. Mai 2018, 18:56
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: non-Vcl Programm mit Listbox

  Alt 14. Mai 2018, 19:27
Ich habe es nun umgestellt, von .res direkt in den Hauptcode.

So sieht es bis jetzt aus:
Delphi-Quellcode:
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.
Doch wie fülle ich Listbox, und wie werden daraus 2 Columns?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: non-Vcl Programm mit Listbox

  Alt 14. Mai 2018, 19:53
Du willst Colums in einer ListBox erstellen ohne die dafür benötigten Flags zu setzen, wie das?
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

Geändert von EWeiss (14. Mai 2018 um 19:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: non-Vcl Programm mit Listbox

  Alt 14. Mai 2018, 20:00
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: non-Vcl Programm mit Listbox

  Alt 14. Mai 2018, 20:03
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.
Delphi-Quellcode:
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);
LBS_SORT or LBS_STANDARD = Window Style Flags

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

Geändert von EWeiss (14. Mai 2018 um 20:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: non-Vcl Programm mit Listbox

  Alt 14. Mai 2018, 20:10
Aber wie gesagt suche nach den Tutorials von Luckie.
Danke, bin fündig geworden, sehr cooles PDF, viel zu blättern hehehe
Ich beende hier erstmal und lese mich da durch.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: non-Vcl Programm mit Listbox

  Alt 15. Mai 2018, 12:37
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".
Du willst keine Listbox, du willst ein Listview.

Und zu meinen Tutorials, es macht Sinn sie Kapitel für Kapitel durch zu arbeiten, da die Kapitel aufeinander aufbauen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: non-Vcl Programm mit Listbox

  Alt 15. Mai 2018, 12:46
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".
Du willst keine Listbox, du willst ein Listview.

Und zu meinen Tutorials, es macht Sinn sie Kapitel für Kapitel durch zu arbeiten, da die Kapitel aufeinander aufbauen.
Nicht unbedingt.
Ich kann ein Icon sowohl auch Columns einer ListBox hinzufügen.
Das sollte kein Problem sein.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: non-Vcl Programm mit Listbox

  Alt 15. Mai 2018, 13:11
Natürlich kann man vor einem Listboxeintrag ein Icon darstellen. Aber er hat noch was von einem "String" geschrieben und dann sind wir bei einem Listview. Eine Listbox kennt keine Spalten.

Zitat:
Column 1 ein Icon + "String" ausgebe und Column 2 nur ein "String".
Natürlich könnt man mit Tabulatoren oder Leerzeichen Spalten simulieren, aber wenn man dann mal mehr will (Sortieren, Einfärben, usw.), stößt man schnell an die Grenze und wünscht sich, man hätte gleich einen Listview genommen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: non-Vcl Programm mit Listbox

  Alt 15. Mai 2018, 13:12
Zitat:
Natürlich könnt man mit Tabulatoren oder Leerzeichen Spalten simulieren, aber wenn man dann mal mehr will (Sortieren, Einfärben, usw.), stößt man schnell an die Grenze und wünscht sich, man hätte gleich einen Listview genommen.
Das ist richtig

gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz