Einzelnen Beitrag anzeigen

regiontop

Registriert seit: 6. Jun 2006
8 Beiträge
 
#3

Re: TTreeView - Knoten umbenennen

  Alt 7. Jun 2006, 07:16
Also erstmal vielen Dank für die Antwort, ich werde mal den Quellcode posten, vielleicht läßt sich der Fehler so erkennen.

Wichtige Procedures meiner Hauptunit
Delphi-Quellcode:
procedure TForm1.InitListView;
var
AktStrasse : Tstrasse;
AktNode: TTreeNode;
begin
TreeView1.Items.Clear;
TreeView1.Items.Add(NIL,'Strassen');
while DataModule1.GetAdresse(AktStrasse) = TRUE do
 begin
  AktNode:= TreeView1.Items.AddChild(TreeView1.Items[0], AktStrasse.strassen);
  TreeView1.Items.AddChild(AktNode,'Dummy');
  end;
  TreeView1.Items[0].Expand(False);
end;


procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
  var AllowExpansion: Boolean);
var
  AktGeb: Tgeb;
  AktWoh: Twoh;
  AktNode: TTreeNode;
  
begin
 if node.Parent <> nil then
 begin
 statusbar1.SimpleText:=node.Parent.Text;
 if node.Text <> 'Strassenthen
   node.DeleteChildren;
   if node.parent.Text = 'Strassenthen
   begin
    while DataModule1.GetGebaude(node.Text,AktGeb) = true do
    begin
     aktnode:=Treeview1.Items.AddChild(node , inttostr(aktgeb.HNR));
     treeview1.items.AddChild(aktnode, 'Dummy');
    end;
    end
    else
     begin
      aktgeb.GName:=node.Text;
      aktgeb.str.strassen:=node.Parent.Text;
      while
      datamodule1.GetWohnung(node.Text, aktwoh) = true do
       begin
        Treeview1.Items.AddChild(node, inttostr(aktwoh.ZI));
       end;
      end;
     end;
  end;
Funktionen meiner Zweitunit
Delphi-Quellcode:
function TDataModule1.GetAdressePK (strasse: string): integer;
begin
GetAdressePK:=-1;
ADOQuery3.Parameters.ParamByName('Int').Value:=strasse;
ADOQuery3.Open;
if ADOQuery3.RecordCount <> 0 then
GetAdressePK := ADOQuery3.FieldByName('EADR').AsInteger;
ADOQuery3.Close;
end;


function TDataModule1.GetGebaudePK(HNR: string): integer;
begin
GetGebaudePK:=-1;
ADOQuery6.Parameters.ParamByName('Ext').Value:=HNR;
ADOQuery6.Open;
if ADOQuery6.RecordCount <> 0 then
GetGebaudePK:= ADOQuery6.FieldByName('EGID').AsInteger;
ADOQuery6.Close;
end;


function TDataModule1.GetAdresse (var strasse: Tstrasse): Boolean;
begin
GetAdresse := TRUE;
if ADOQuery1.Active = FALSE then
 ADOQuery1.Open;
if ADOQuery1.Eof =false then
 begin
  with strasse do
   begin
    strassen:= ADOQuery1.FieldByName( 'strasse').AsString;
   end;
  ADOQuery1.Next;
  end
  else
   begin
   GetAdresse:= False;
   ADOQuery1.Close;
   end;
  end;


function TDataModule1.GetGebaude (Strasse: String; var Geb: Tgeb): Boolean;
var
 AdressePK: integer;
begin
 GetGebaude:= true;
 AdressePK:= GetAdressePK(strasse);
 if AdressePK <> -1 then
  begin
   if ADOQuery2.Active = false then
    begin
     ADOQuery2.Parameters.ParamByName('GebPK').Value:= AdressePK;
     ADOQuery2.Open;
     end;
     if ADOQuery2.Eof = false then
      begin
       with Geb do
        begin
          EGID:=ADOQuery2.FieldByName( 'EGID').Asinteger;
          san:= ADOQuery2.FieldByName( 'san').AsString;
          HNR:= ADOQuery2.FieldByName( 'HNR').AsInteger;
          GName:=ADOQuery2.FieldByName( 'GName').AsString;
          HNRZ:= ADOQuery2.FieldByName( 'HNRZ').AsString;
        end;
        ADOQuery2.Next;
       end
      else
       begin
        GetGebaude:= false;
        ADOQuery2.Close;
       end;
      end
     else
      GetGebaude :=false;
     end;
   

function TDataModule1.GetWohnung (HNR: string; var Woh: Twoh): Boolean;
var
 GebaudePK: integer;
begin
 GetWohnung:= true;
 GebaudePK:=GetGebaudePK(HNR);
 if GebaudePK <> -1 then
  begin
   if ADOQuery5.Active = false then
    begin
     ADOQuery5.Parameters.ParamByName('WohPK').Value:= GebaudePK;
     ADOQuery5.Open;
     end;
     if ADOQuery5.Eof = false then
      begin
       with Woh do
        begin
          EGID:=ADOQuery5.FieldByName( 'EGID').Asinteger;
          ZI:= ADOQuery5.FieldByName( 'Zimmerzahl').AsInteger;
          NA:= ADOQuery5.FieldByName( 'Nutzungsart').AsString;
          WName:= ADOQuery5.FieldByName( 'WName').AsString;
        end;
        ADOQuery5.Next;
       end
      else
       begin
        GetWohnung:= false;
        ADOQuery5.Close;
       end;
      end
     else
      GetWohnung:=false;
     end;
In den ADOQuery's steht folgendes:

ADOQuery1: Select * from Adresse order by strasse
ADOQuery2: Select * from Gebaeude where EADR=: GebPK
ADOQuery3: Select * from Adresse where strasse=: int
ADOquery5: Select * from Wohnung where EGID=: WohPK
ADOQuery6: Select * from Gebaeude where HNR=: ext
Miniaturansicht angehängter Grafiken
screen_196.jpg  
  Mit Zitat antworten Zitat