AGB  ·  Datenschutz  ·  Impressum  







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

Mehrere Listboxen

Ein Thema von EWeiss · begonnen am 16. Mär 2011 · letzter Beitrag vom 17. Mär 2011
Antwort Antwort
Seite 2 von 3     12 3      
EWeiss
(Gast)

n/a Beiträge
 
#11

AW: Mehrere Listboxen

  Alt 17. Mär 2011, 10:12
Nur zum Verständnis: es gibt mehrere Listboxen, aber nur einen Record? Dann ist das ja klar, dass dieser nur die Daten der zuletzt erstellten Listbox enthält, da die Daten ja ständig überschrieben werden. Eine Liste tut hier Not (ob als dynamisches Array, verkettete Liste oder TList, das spielt keine Rolle).
Zuerst..
Habe es dann geändert also den Record als dynamisches Array angelegt und beim erstellen einer neuen ListBox
odnungsgemäß incrementiert.

Ist aber das selbe problem.
zweite ListBox erstellt und die alte übernimmt das Handle der zuletzt erstellten ListBox.

@Sir Rufo
Zitat:
Bau dir also eine Klasse (TEWListBox) und Tüte mit dieser Klasse alles ab.
Was für eine Klasse.. mehr als eine Für ne ListBox geht wohl nicht oder?

Ist das keine Klasse?

Delphi-Quellcode:
type
  ISkinListBox = interface
    ['{38EF3B4F-86A1-45D0-A7F3-4E45E125979D}']
    function GetHandle: hWnd;
    property Handle: hWnd read GetHandle;
    procedure SetFont(nPointSize: Integer; FontName: PAnsiChar; AktForecolor: COLORREF;
      InAktForecolor: COLORREF; Shadow: Boolean; SOffset: Integer; ShadowColor: COLORREF);
    function GetDrawStyle: Integer;
    property DrawStyle: Integer read GetDrawStyle;
    function GetTop: Integer;
    property Top: Integer read GetTop;
    function ListGetText(hList: HWND; Item: Integer): PAnsiChar;
    function ListAdd(hList: HWND; Tmp: string): Integer;
    function ListGetCurSel(hList: HWND): Integer;
    function ListFindString(hList: HWND; Tmp: string): Integer;
    procedure ListSelectPlus(hList: HWND; nSelected: Integer);
    procedure ListDelete(hList: HWND; nIndex: Integer);
    procedure ListDeleteAll(hList: HWND);
    function ListCount(hList: HWND): Integer;
    function ListGetTopIndex(hList: HWND): Integer;
    procedure ListSetTopIndex(hList: HWND; nTopIndex: Integer);
    function ListGetSel(hList: HWND; nSelected: Integer): Bool;
    function GetItemHeight(hList: HWND; ItemHeigh: Integer): Integer;
  end;

  TSkinListBox = class(TInterfacedObject, ISkinListBox)
  private
    LStyle: DWORD;
    FHOwner: HWND;
    FHandle: HWND;
    FEnumProcInst: Pointer;
    ImgIcon: Cardinal;
    ImgIconH: Cardinal;
    ImgIconW: Cardinal;
    function MakeProcInstance(M: TMethod): Pointer;
    procedure SetCTLFont(hCtL: HWND; Font: hFont);
    procedure SubClass(WinHandle: HWND; wProc: Integer);
    procedure UnSubClass(WinHandle: HWND);
    function GetHandle: hWnd;
  public
    property Handle: HWND Read FHandle;
    function GetDrawStyle: Integer;
    property DrawStyle: Integer read GetDrawStyle;
    function GetTop: Integer;
    property Top: Integer read GetTop;
    procedure SetFont(nPointSize: Integer; FontName: PAnsiChar; AktForecolor: COLORREF;
      InAktForecolor: COLORREF; Shadow: Boolean; SOffset: Integer; ShadowColor: COLORREF);
    function ListBoxProc(WinHandle: HWND; Msg: UINT; wP: WParam; lP: LParam): LRESULT; stdcall;
    procedure DrawItem(WinHandle: HWND; Dc: Hdc; Index: Integer;Rect: TRect; Selected: Bool);
    procedure ListSetTopIndex(hList: HWND; nTopIndex: Integer);
    function ListGetTopIndex(hList: HWND): Integer;
    function ListGetSel(hList: HWND; nSelected: Integer): Bool;
    function GetItemHeight(hList: HWND; ItemHeigh: Integer): Integer;
    function ListCount(hList: HWND): Integer;
    procedure ListDeleteAll(hList: HWND);
    procedure ListDelete(hList: HWND; nIndex: Integer);
    procedure ListSelectPlus(hList: HWND; nSelected: Integer);
    function ListFindString(hList: HWND; Tmp: string): Integer;
    function ListGetCurSel(hList: HWND): Integer;
    function ListAdd(hList: HWND; Tmp: string): Integer;
    function ListGetText(hList: HWND; Item: Integer): PAnsiChar;
    constructor Create(hOwner: HWND; FullpathImageName: string; x, y, xW, yH,
      ListID: integer; Visible: Boolean; ItemHeight: Integer; BackColor: COLORREF);
    destructor Destroy; override;
  end;


  PLB_TYPE = ^TLB_TYPE;
  TLB_TYPE = record
    AktForecolor : COLORREF;
    InAktForecolor : COLORREF;
    Backcolor : COLORREF;
    Shadow : Boolean;
    ShadowColor : COLORREF;
    ShadowOffset : Integer;
    ForeColorSelected : COLORREF;
    BackColorSelected : COLORREF;
    PointSize : Integer;
    DrawStyle : Integer;
    BorderStyle : Integer;
    Icon : string;
    ItemHeight : Integer;
    Handle : HWND;
    Left : Integer;
    Top : Integer;
    Width : Integer;
    Height : Integer;
    Font : HFONT;
  end;

var
  ListBoxType: TLB_TYPE;
Und was soll ich jetzt hier abtüten??
Als das was ich schon abgetütet habe ?

gruss

Geändert von EWeiss (17. Mär 2011 um 10:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: Mehrere Listboxen

  Alt 17. Mär 2011, 10:31
Ja, das ist eine Klasse, aber warum hast du die Props in einem Record (als globale Variable?)?
Die gehören doch zu der (in die) Klasse ... weil pro Instanz ja andere Werte gespeichert werden sollen (deine Frage).

Die Prop Top ist z.B. in der Klasse und im Record.

Sieht auf jeden Fall sehr merkwürden aus
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#13

AW: Mehrere Listboxen

  Alt 17. Mär 2011, 10:41
Außerdem gehören nur die Properties in den public-Abschnitt, die dazugehörigen Getter und Setter dagegen nach private.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

AW: Mehrere Listboxen

  Alt 17. Mär 2011, 10:42
Ja, das ist eine Klasse, aber warum hast du die Props in einem Record (als globale Variable?)?
Die gehören doch zu der (in die) Klasse ... weil pro Instanz ja andere Werte gespeichert werden sollen (deine Frage).

Die Prop Top ist z.B. in der Klasse und im Record.

Sieht auf jeden Fall sehr merkwürden aus
Ich wollte die Properties nicht über das Interface nach außen weiterleiten.
Sondern nur für das Zeichnen nötige Variaben incl das Handle natürlich.

Deshalb ist das Top und DrawStyle im Interface und dem Record..
Die Rückgabe ist dann logischerweise ListBoxTyp.Top, ListBoxTyp.DrawStyle.

Ich sagte ja schon selbst beim erstellen eines Dynamischen Array TLB_TYPE = array of record
Wird mir das zuvor erstellte Handle ausgetauscht und ist mit InstrumentList.Handle nicht mehr abfragbar.
Komme also nur noch über
GetDlgItem(AppHandle, ID_INSTRUMENTLIST) an mein Windowhandle der Listbox heran.

Das geht zwar ist aber nicht die beste lösung.

gruss

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: Mehrere Listboxen

  Alt 17. Mär 2011, 10:44
Außerdem gehören nur die Properties in den public-Abschnitt, die dazugehörigen Getter und Setter dagegen nach private.
Kann ich noch ändern .. Danke.
Ändert aber nichts an meinem Problem.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#16

AW: Mehrere Listboxen

  Alt 17. Mär 2011, 10:54
Ich verstehe aber immer noch nicht, wieso Du die Eigenschaften nicht in der Klasse deklarierst, sondern stattdessen noch mit einem externen Record herumhantierst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: Mehrere Listboxen

  Alt 17. Mär 2011, 10:57
Ich verstehe aber immer noch nicht, wieso Du die Eigenschaften nicht in der Klasse deklarierst, sondern stattdessen noch mit einem externen Record herumhantierst.
Gut ich werde's mal umbauen da ich mit meinem Record wohl etwas daneben liege.
Das habe ich berichtigt.

Delphi-Quellcode:
  public
    property Handle: HWND Read FHandle;
    property Top: Integer read GetTop;
    property DrawStyle: Integer read GetDrawStyle;
    constructor Create(hOwner: HWND; FullpathImageName: string; x, y, xW, yH,
      ListID: integer; Visible: Boolean; ItemHeight: Integer; BackColor: COLORREF);
    destructor Destroy; override;
Der Rest ist jetzt in Privat

gruss
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#18

AW: Mehrere Listboxen

  Alt 17. Mär 2011, 11:08
Das sieht schon schlüssiger aus
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#19

AW: Mehrere Listboxen

  Alt 17. Mär 2011, 11:27
Das sieht schon schlüssiger aus
Jup Danke dir werde mich in zukunft dran halten

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#20

AW: Mehrere Listboxen

  Alt 17. Mär 2011, 12:00
Soooo...
Jetzt werden meine Properties gehalten.
Keine Ahnung was mich da geritten hat mit dem Record.

Delphi-Quellcode:
  public
    property Handle: HWND read GetHandle write FHandle;
    property AktForecolor: COLORREF read GetAktForecolor write FAktForecolor;
    property InAktForecolor: COLORREF read GetInAktForecolor write FInAktForecolor;
    property Backcolor: COLORREF read GetBackcolor write FBackcolor;
    property ShadowColor: COLORREF read GetShadowColor write FShadowColor;
    property ForeColorSelected: COLORREF read GetForeColorSelected write FForeColorSelected;
    property BackColorSelected: COLORREF read GetBackColorSelected write FBackColorSelected;
    property ShadowOffset: Integer read GetShadowOffset write FShadowOffset;
    property PointSize: Integer read GetPointSize write FPointSize;
    property DrawStyle: Integer read GetDrawStyle write FDrawStyle;
    property BorderStyle: Integer read GetBorderStyle write FBorderStyle;
    property Left: Integer read GetLeft write FLeft;
    property Top: Integer read GetTop write FTop;
    property Width: Integer read GetWidth write FWidth;
    property Height: Integer read GetHeight write FHeight;
    property Shadow: Boolean read GetShadow write FShadow;
    property ListItemHeight: Integer read GetListItemHeight write FListItemHeight;
    property ListFont: HFONT read GetListFont write FListFont;
    property Icon: string read GetIcon write FIcon;
    constructor Create(hOwner: HWND; FullpathImageName: string; x, y, xW, yH,
      ListID: integer; Visible: Boolean; ItemHeight: Integer; BackColor: COLORREF);
    destructor Destroy; override;
Danke euch..
Und wieder ein Problem weniger.

PS:
Durch die änderung habe ich auch das problem mit dem Beenden der Anwendung bereinigt.
to many error
Die Listboxen konnten nicht beendet werden weil sie alle ein Falsches Handle hatten.

gruss

Geändert von EWeiss (17. Mär 2011 um 12:07 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 16:01 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