AGB  ·  Datenschutz  ·  Impressum  







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

Nonvcl Listbox LB_SETTOPINDEX

Ein Thema von EWeiss · begonnen am 30. Jan 2009 · letzter Beitrag vom 30. Jan 2009
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Nonvcl Listbox LB_SETTOPINDEX

  Alt 30. Jan 2009, 19:49
Wieder ListBox kommt noch einiges

Habe eine Function angelegt für MouseWeel.

Delphi-Quellcode:
type
  TSkinListBox = class
  private
    LStyle: DWORD;
    hFDefault: hFont;
    BColor,
    FColor: COLORREF;
    FHOwner: HWND;
    function DefaultFont: hFont;
    procedure SetCTLFont(hCtL: HWND; Font: hFont);
    procedure SubClass(WinHandle: HWND);
    procedure UnSubClass(WinHandle: HWND);
  public
    Handle: HWND;
    procedure DrawItem(lP: Integer);
    procedure ListSetTopIndex(hList: HWND; nTopIndex: Integer);
    function ListGetTopIndex(hList: HWND): Integer;
    constructor Create(hOwner: HWND; FullpathImageName: string; x, y, xW, yH,
      ListID: integer; Visible: Boolean; BackBitmap: string; AktForecolor: COLORREF;
      InAktForecolor: COLORREF; BackColor: COLORREF);
    destructor Destroy; override;
  end;
Delphi-Quellcode:
function TSkinListBox.ListGetTopIndex(hList: HWND): Integer;
var
  nGetTopIndex: Integer;
begin
    nGetTopIndex := -1;

    if hList <> 0 then
    begin
       nGetTopIndex := SendMessage(hList, LB_GETTOPINDEX, 0, 0);
       if nGetTopIndex > -1 then
         inc(nGetTopIndex);
    end;
    Result := nGetTopIndex;
end
Wenn ich nun in der ListBoxProc(nicht in der Classe implementiert) TSkinListBox.ListGetTopIndex aufrufe dann meckert der compiler !
Zitat:
[Pascal Error] uListBox.pas(286): E2076 This form of method call only allowed for class methods
Wie kann ich das abfangen ?

gruss Emil
  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
 
#2

Re: Nonvcl Listbox LB_SETTOPINDEX

  Alt 30. Jan 2009, 19:58
Musst Du die Proc dann nicht als class procedure deklarieren?
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
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Nonvcl Listbox LB_SETTOPINDEX

  Alt 30. Jan 2009, 19:59
Zitat von Sir Rufo:
Musst Du die Proc dann nicht als class procedure deklarieren?
Hmm verstehe nicht was du jetzt meinst.

gib mir einen TIP
Kann zwar halbwegs mit API aber einige dinge von Delphi sind mir noch nicht bekannt

gruss EMil
  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
 
#4

Re: Nonvcl Listbox LB_SETTOPINDEX

  Alt 30. Jan 2009, 20:01
Delphi-Quellcode:
type
  TSkinListBox = class
  private
    LStyle: DWORD;
    hFDefault: hFont;
    BColor,
    FColor: COLORREF;
    FHOwner: HWND;
    function DefaultFont: hFont;
    procedure SetCTLFont(hCtL: HWND; Font: hFont);
    procedure SubClass(WinHandle: HWND);
    procedure UnSubClass(WinHandle: HWND);
  public
    Handle: HWND;
    procedure DrawItem(lP: Integer);
    procedure ListSetTopIndex(hList: HWND; nTopIndex: Integer);
    class function ListGetTopIndex(hList: HWND): Integer; // <-- DA IS :)
    constructor Create(hOwner: HWND; FullpathImageName: string; x, y, xW, yH,
      ListID: integer; Visible: Boolean; BackBitmap: string; AktForecolor: COLORREF;
      InAktForecolor: COLORREF; BackColor: COLORREF);
    destructor Destroy; override;
  end;
Du willst ja mit der Klasse die Funktion aufrufen und nicht mit einer Objekt-Referenz ... das muss man bei der Klassendefinition berücksichtigen.
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
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Nonvcl Listbox LB_SETTOPINDEX

  Alt 30. Jan 2009, 20:06
Danke!
Ahh wieder was dazu gelernt.
Funktioniert.
Delphi-Quellcode:
class function TSkinListBox.ListGetTopIndex(hList: HWND): Integer;
var
  nGetTopIndex: Integer;
begin
    nGetTopIndex := -1;

    if hList <> 0 then
    begin
       nGetTopIndex := SendMessage(hList, LB_GETTOPINDEX, 0, 0);
       if nGetTopIndex > -1 then
         inc(nGetTopIndex);
    end;
    Result := nGetTopIndex;
end;
Ähnlich byRef in VB denk ich mal..
Muss man wissen

gruss Emil
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:20 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