[delphi] frames aanroepen

Pagina: 1
Acties:

  • Tom-my
  • Registratie: November 2000
  • Laatst online: 19-06 09:25

Tom-my

w03iz0rz

Topicstarter
Oke ik zit ff te knoeien met frames, ik krijg hierop daarintegen een hele fijne foutmelding.. Ik zal vast wel iets fouts doen maar ik kan niet vinden wat! :( Maybe somebody kan help moi?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, CheckLst, JvFormWallpaper, RxGIF, JvImageTransform,
  JvImage, ComCtrls, ImgList, klanten, Db, ADODB;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    TreeView1: TTreeView;
    ImageList1: TImageList;
    ADOConnection1: TADOConnection;
    Klanten: TFrame2;
    procedure TreeView1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    oudframe:TFrame;

    { Private declarations }
  public

    function KiesWeertegevenFrame:TFrame;
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.TreeView1Click(Sender: TObject);
begin
  if oudframe <> KiesWeertegevenFrame then
  begin
    oudframe.Align := alNone;
    KiesWeertegevenFrame.Align := alClient;
  end
end;

function TForm1.KiesWeertegevenFrame:TFrame;
var
  node : TTreenode;
  x : integer;
begin
  node := TTreenode.create(TreeView1.Items);
  for x := 0 to node.count -1 do
     if node.Item[x].Selected then
     begin
     result.Name := node.Item[x].Text;
     end
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    klanten.Align := alClient;
    oudframe.name := 'Klanten';
end;

end.

"Then there was the man who drowned crossing a stream with an average depth of six inches."


  • Tom-my
  • Registratie: November 2000
  • Laatst online: 19-06 09:25

Tom-my

w03iz0rz

Topicstarter
btw ik krijg een acces violation op de allerlaatste regel code oudeframe.name := 'Klanten';

(btw, ik zit op F9 te drukken als ik hier wil posten, is dat erg in de zin van verslavingen? :))

"Then there was the man who drowned crossing a stream with an average depth of six inches."


Verwijderd

Op zondag 25 november 2001 23:19 schreef FanToom het volgende:
btw ik krijg een acces violation op de allerlaatste regel code oudeframe.name := 'Klanten';
Best wel logisch. In de FormCreate is oudeframe nog nil, en nil heeft geen properties die je kunt zetten.

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 16-09 21:19

Delphi32

Heading for the gates of Eden

Je functie KiesWeerTeGevenFrame geeft geen result terug... Je zet weliswaar de Name van je result maar dat result is tot op dat moment undefined en dus kun je ongeveer alle foutmeldingen verwachten die je nooit krijgt.

Je zult daar iets moeten doen in te trant van
code:
1
2
3
4
5
6
7
8
9
function TForm1.KiesWeerTeGevenFrame: TFrame;
begin
  if Assigned(TreeView1.Selected) then begin
    case TreeView1.Selected.Level of
    0: result := MyTopLevelFrame;
    1: result := MyFirstLevelFrame;
    end;
  end;
end;

waarbij MyTopLevelFrame en MyFirstLevelFrame dan die dingen zijn die op je form staan. Runtime creeren kan natuurlijk ook en is nog fraaier :)