AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi [gelöst]ListBox Zugriffsverletzung
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst]ListBox Zugriffsverletzung

Ein Thema von ONeill · begonnen am 26. Nov 2011 · letzter Beitrag vom 26. Nov 2011
 
ONeill

Registriert seit: 17. Nov 2011
28 Beiträge
 
#1

[gelöst]ListBox Zugriffsverletzung

  Alt 26. Nov 2011, 12:40
Hallo Forum,

ich habe mal ein kleines Problem.
Ich habe mir hier aus dem Forum die beiden veränderten Klassen für die ListBox genommen, damit zwei ListBoxen parallel scrollen.
Folgender Code ist da rausgekommen:
Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, mysql;

type
  TNoVScrolllistbox = Class( Tlistbox )
  private
    FRef : TCustomListBox;
    Procedure WMNCCalcSize( Var msg: TMessage );
      message WM_NCCALCSIZE;
  published
  property Reference : TCustomListBox read FRef write FRef;
  end;
  TMyListBox = class(TListBox)
  private
    FRef : TCustomListBox;
    procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
    procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Reference : TCustomListBox read FRef write FRef;
  end;
//[...]
private

  public
    LBox : TNoVScrolllistbox;
    LBox1: TMyListBox;
  end;
//[...]
procedure TSearchfor.FormCreate(Sender: TObject);
begin
  Randomize;
  LBox := TNoVScrolllistbox.Create(Self);
  with LBox do
  begin
   Parent := Self;
   Visible := true;
   Top := 96;
   Left := 0;
   Width := 154;
   Height := 244;
   Enabled:=False;
  end;
  Randomize;
  LBox1 := TMyListBox.Create(Self);
  with LBox1 do
  begin
   Parent := Self;
   Visible := true;
   Top := 96;
   Left := 154;
   Width := 65;
   Height := 244;
   Reference :=LBox;
  end;
  SetScrollRange(LBox.Handle, SB_VERT, 0, 0, False);
end;

procedure TNoVScrolllistbox.WMNCCalcSize(var msg: TMessage);
var
  style: Integer;
begin
  style := getWindowLong( handle, GWL_STYLE );
  If (style and WS_VSCROLL) <> 0 Then
    SetWindowLong( handle, GWL_STYLE, style and not WS_VSCROLL );
  inherited;
end;

procedure TSearchfor.FormDestroy(Sender: TObject);
begin
LBox.Free;
end;

constructor TMyListBox.Create(AOwner: TComponent);
begin
  inherited;
  FRef := nil;
end;

procedure TMyListBox.WMHScroll(var Message: TWMHScroll);
begin
 inherited;
end;

procedure TMyListBox.WMVScroll(var Message: TWMVScroll);
begin
 inherited;
 if Assigned(FRef) then FRef.TopIndex := TopIndex;
end;

end.
Funktioniert auch alles ganz gut. Allerdings habe ich dann das Problem, das ich von einem anderen Form, welches so erstellt wird:
Delphi-Quellcode:
procedure TSearchfor.btnshowuserClick(Sender: TObject);
begin
TShowuser.Create(Self);
end;
nicht wie folgt auf die ListBoxen zugreifen kann:
showmessage(Searchfor.LBox.Items[SearchFor.LBox.ItemIndex]); Da bekomme ich immer eine Zugriffsverletzung.
Kann mir da jemand weiterhelfen, ich bin mit meinem Latein am Ende, ich weiß ehrlich nicht mehr weiter, rein theoretisch müsste es ja gehen.
Ich hoffe, das es nicht nur ein Problem ist, welches ich übersehe

Danke schonmal für eure Hilfe schonmal im voraus,

Geändert von ONeill (26. Nov 2011 um 17:24 Uhr) Grund: Gelöst markiert
  Mit Zitat antworten Zitat
 


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 05:42 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