Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi frage zu treeview (https://www.delphipraxis.net/5458-frage-zu-treeview.html)

Zero1 7. Jun 2003 05:10


frage zu treeview
 
Delphi-Quellcode:
procedure TForm1.InfolistClick(Sender: TObject);
begin
if infolist.Selected.Text='test'
 then memo1.text('test blablabla');
end;
hum weis einer maybe wie ich den text bekomme? wenn ich zb auf das item

test clicke in treeview sollte in der memo1 ('test blablabla'); geschrieben sein? weis einer wo das prob liegt?

danke schon im vorraus!

zero1

Jens Schumann 7. Jun 2003 09:51

Hallo,
nutze doch das OnChange Event.
Delphi-Quellcode:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  If Node<>Nil then
    Memo1.Text:=Node.Text;
end;

Zero1 7. Jun 2003 13:41

nun ja das event wäre was ,aber in der memo soll ca 1 seite mit text aufgelistet werden *g*

büdde help!!

zero1

[infolist = treeview]

Christian Seehase 7. Jun 2003 13:58

Moin Zero1,

das ginge, z.B. mit Memo1.Lines.LoadFromFile.

Wichtig ist in jedem Falle das was Jens geschrieben hat. Du musst abfragen, ob überhaupt ein Item ausgewählt wurde.
Es ist schliesslich möglich, dass Du (bezogen auf das OnClick) auf den TreeView klickst, ohne ein Item zu markieren. Dann wäre InfoList.Selected = nil, und das Ansprechen von InfoList.Selected.Text läuft auf eine Exception.
Statt der Eigenschaft Text könntest Du auch Data benutzen.
Nachteil: Die Eigenschaft muss zusätzlich zum Text gefüllt werden.
Vorteil: Man muss nicht auf die Schreibweise von Text achten, da man Data numerisch vergleicht.

Zero1 7. Jun 2003 14:14

Code:
Memo1.Text:=Node.Text;
ich finds eh gut aber prob is node.text ! es wird ja von einer file die texte geladen oder nicht? kann man das nicht gleich im prog rein machen?


zero1

Christian Seehase 7. Jun 2003 14:32

Moin Zero,

um welche Textmengen geht's denn so?
(je Memo Eintrag, und gesamt)

Zero1 7. Jun 2003 14:58

hiho hase :p

ca 100 - 150 lines

zero1

Christian Seehase 7. Jun 2003 17:16

Moin Zero,

gesamt oder je...

Zero1 7. Jun 2003 17:26

gesamt *g*

also ich benötige ca 100-150 zeilen! die länge is dabei egal!

deswegen auch
Delphi-Quellcode:
then memo1.text('test blablabla........................ etc');
zero1

Christian Seehase 7. Jun 2003 22:00

Moin Zero,

die Text könntest Du als Resourcen in Deinem Programm unterbringen, und zwar einfach unter verwendung von Resourcestring.


Delphi-Quellcode:
resourcestring
 _rsText1 = 'Zeile1'#13#10'Zeile2'#13#10'Zeile3';
 _rsText2 = //...
 //...

Zero1 8. Jun 2003 14:52

jo aber wie ruf ich dan _rstext auf? wenn jemand zb auf test click?

Christian Seehase 8. Jun 2003 18:01

Moin Zero1,

ein Resourcestring kannst Du genauso verwenden, wie eine Stringkonstante, also z.B. an Memo1.Text zuweisen.

Zero1 8. Jun 2003 19:02

sample plz ich versteh das mit Resourcestring nicht wirklich *g* sorry


zero1

Christian Seehase 8. Jun 2003 19:08

Moin Zero,

Delphi-Quellcode:
Memo1.Text := _rsText1;

Zero1 8. Jun 2003 19:52

Delphi-Quellcode:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  If Node<>Nil then
    Memo1.Text:=_rs1.Text;
end;
und es gibt ja mehre zeilen bei treeview zum auswählen!

wie findet er heraus das wenn ein user zb auf test1 click das dan der text zu test1 gehört aufgelistet wird? bzw wenn er mal auf test2 click..etc

Christian Seehase 9. Jun 2003 01:41

Moin Zero1,

dazu ein paar Tips:
  1. Node ist vom Typ TTreeNode
  2. TTreeNode hat die Eigenschaft Text
  3. TTreeView.Selected gibt eine Wert vom Typ TTreeNode zurück
  4. Kombiniere das mit dem Source aus Deinem Eingangsposting

;-)

Zero1 9. Jun 2003 03:21

hum ich spiel da nun ca 30min herum und es will einfach ned! soviele varianten woAAAAA :p


büdde help

zero1

Christian Seehase 9. Jun 2003 04:08

Moin Zero,

Jens' Beispiel mit dem OnChange Ergeignis:

Delphi-Quellcode:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  If Node<>Nil then
    Memo1.Text:=Node.Text;
end;
Dein Source aus dem Eingangsposting:

Delphi-Quellcode:
procedure TForm1.InfolistClick(Sender: TObject);
begin
  if infolist.Selected.Text='test'
    then memo1.text('test blablabla');
end;
Ergibt zusammen

Delphi-Quellcode:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  If Node<>Nil then
  begin
    if Node.Text = 'test' then
      Memo1.Text:='test blablabla';
  end;
end;
Mein Hinweis mit der Zuweisung eines Resourcestrings

Delphi-Quellcode:
Memo1.Text := _rsText1;
Das jetzt zusammengeführt ergibt:

Delphi-Quellcode:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  If Node<>Nil then
  begin
    if Node.Text = 'test' then
      Memo1.Text := _rsText1;
  end;
end;
Was mir allerdings ein Rätsel ist:
Wie bist Du denn hierauf gekommen?

Delphi-Quellcode:
Memo1.Text:=_rs1.Text;

Zero1 9. Jun 2003 04:29

also deine antworten kommen immer an ungewöhnlichen zeiten *grins*

Verfasst am: Heute um 04:08 *grins* :)
aber many thx daweil das du mir hilfst :p!

also zu deiner sources auf die bin ich auch draugekommen aber nur das prob war :

Delphi-Quellcode:
procedure TForm1.InfolistChange(Sender: TObject; Node: TTreeNode);
var _rsText1, _rsText2: String;
begin
_rsText1 := 'tessssst';
_rsText2 := 'teeeest';

  If Node<>Nil then
  begin
    if Node.Text = 'Info' then
      Memo1.Text := _rsText1;


end;
end;
irgendwie weis ich nicht wie es funkt wenn zb einer info anwählt kommt dan ein text und wenn er info2 anclickt kommer wieder ein text aber ein ANDERER... also das prob mit memo is er nimmt ir nur den letzten teil :(
Delphi-Quellcode:
    if Node.Text = 'Info2' then
      Memo1.Text := _rsText2;
wie bekomme ich das gelöst?

und zu
Delphi-Quellcode:
_rs1.Text;
wollte nicht alles auschreiben*g* sozusagen abgekürzt :p


nebenbei so manchmal verdrück ich mich immer und es kommt dann bei der sorcs ÜBERSCHREIBEN stat einfügen ! wie stell ich das ab?? bzw zurück?? den das nervt bissl *g* wenn ich schon alles eingegeben hab und er deletet beim schreiben alles :(

greez zero1

Christian Seehase 9. Jun 2003 04:36

Moin Zero,

Zitat:

Zitat von Zero1
prob mit memo is er nimmt ir nur den letzten teil

Wenn Du die Eigenschaft Text nimmst, wird natürlich immer der Inhalt des Memos ersetzt.
Wenn fortgeschrieben werden soll dann mit Lines.Add(....).

Das mit dem Überschreib-/Einfügemodus wird, Überraschung, mit der Einfügentaste umgeschaltet. ;-)

Zero1 9. Jun 2003 04:44

hiho :)

ha many thx nun weis ich wie ichs wegbekomme *g*

nun zu treeview :

http://web13.denver113.server4free.de/pic/treeview.JPG

so wenn jemand auf Info clickt soll n text erscheinen wenn jemand auf proxy click = text ....usw.

das mit add.lines brauch ich hierzunicht :p

memo soll verstehen wenn ich auf zb DNS clicke das die texte für DNS geladen werden ..etc

weist wie man das am besten lösen kann?

zero1

Christian Seehase 9. Jun 2003 11:54

Moin Zero,

Zitat:

Zitat von Zero1
memo soll verstehen ...

:shock: :?:

mwiesbau 9. Jun 2003 15:47

Problem mit TTreeviw
 
hab dein problem verstanden denke ich.

wie wärs wenn du den text der im memo stehen soll in eine textdatei speicherst.

ich mach das so

Delphi-Quellcode:
TreeView1.Items.AddChild((TreeView1.selected), edit1.text);
memo1.Lines.SaveToFile('C:\'+edit1.text+'.tvt');

beim on change ereignis der treeview einfach folgender code

Delphi-Quellcode:
memo1.lines.clear;
memo1.lines.LoadFromFile('C:\'+treeview1.Selected.Text+'.tvt');
edit1.Text:='';
edit1.Text:=treeview1.Selected.text;
except
showmessage('Datei konnte nicht gefunden werden');

ich hoffe das hatt dir etwas geholfen. :mrgreen:

Zero1 9. Jun 2003 15:49

genau mwiesbau

aber die texte soll nicht in einer .txt gesaved sein manche leute deleten das gleich *g* also lieber gleich drinen :p

zero1

Zero1 9. Jun 2003 22:34

hum bidde help spiele mich schon ne lange zeit damit herum aber irgendwie will es nicht klappen :(


Delphi-Quellcode:
procedure TForm1.InfolistChange(Sender: TObject; Node: TTreeNode);
// var _rsText1, _rsText2: String;
begin
// _rsText1 := 'test';
// _rsText2 := 'teeeest';

  If Node<>Nil then
  begin
    if Node.Text = 'Info' then
      Memo1.Text := 'teeeeeeeeeeeest';
  begin
    if Node.Text = 'Proxy' then
      Memo1.text := '2ter TEEEEEEST';
   end;
 end;
end;
egal was ich mache es nimmt immer den letzten abschnitt:
Delphi-Quellcode:
    if Node.Text = 'Proxy' then
      Memo1.text := '2ter TEEEEEEST';
   end;
er überspringt den anfangt und nimmt gleich den 2ten teil :(

bitte um hilfe! danke schon mal!!

zero1

Christian Seehase 10. Jun 2003 01:10

Moin Zero,

bei mir funzt das problemlos.

Auch wenn Du ein begin/end zuviel hast.

Zero1 10. Jun 2003 02:37

die gleiche sources? wenn du auf info clickst kommt text bzw wenn du auf proxy clickst ??? waoAAA?? kann ja nicht an delphi 6 liegen???

Christian Seehase 10. Jun 2003 12:17

Moin Zero,

ich hatte mir einen TreeView (TTreeView) und ein Memo (TMemo) auf's Formular gelegt.
Dann dem Treeview zwei Einträge verpasst, eben Info und Proxy, und dann im OnChange diesen Code eingetragen:

Delphi-Quellcode:
begin
// _rsText1 := 'test';
// _rsText2 := 'teeeest';

  If Node<>Nil then
  begin
    if Node.Text = 'Info' then
      Memo1.Text := 'teeeeeeeeeeeest';
  begin // ***
    if Node.Text = 'Proxy' then
      Memo1.text := '2ter TEEEEEEST';
   end; // ***
end;
end;
Keine Probleme.

Vielleicht kann's nochmal jemand mit D6 probieren.

BTW: Lass' mal die mit // *** markierten Zeilen weg. Ein begin/end an der Stelle stört zwar nicht, aber hat irgendwie auch keinen Nutzen. ;-)

Tom 10. Jun 2003 12:48

Zitat:

Zitat von Christian Seehase
Vielleicht kann's nochmal jemand mit D6 probieren.

Natürlich geht das mit D6.

Zero1 10. Jun 2003 13:03

ohh man!!!!! OHH MEGA MAN!!!!!!!!!!!!!!!!!!!!!!!!!! sorry seehase aber es stimmt eh alles !! was ich gerade bemerkt hab das is zum ablachen lol!!
da spiele ich mich ca mehr als 5h und siehe da ! nur ein BUCHSTABE!!! hatte stat info !!! " INFOS " stehen !!! OHHAAA ich könnt mich haun *ohrfeig*

arg!!!

aber trozdem MANY MANY MANY MANY THX! :)

zero1

Zero1 10. Jun 2003 13:37

anderes prob aber kleineres *g* "die text länge" :p

wie soll ich das nun einteilen? bei "#13#10" gehört ja alles in einer zeile mhm aber delphi meckert weil der text zu lang ist?
hum :(

Christian Seehase 10. Jun 2003 14:54

Moin Zero,

das lässt sich umgehen.

Statt die Zeilen mit #13#10 zu verbinden, kannst Du auch +#13#10+ daraus machen. Dann muss es funktionieren.

Der Grund ist folgender:
Wenn Du eine Stringkonstante so bildest

Delphi-Quellcode:
resourcestring
  _sTest = 'Zeile1'#13#10'Zeile2';
dann wird dies vom Compiler als eine (Short) Stringkonstante mit dem Wert Zeile1#13#10Zeile2 angesehen und angelegt.

Schreibt man hingegen

Delphi-Quellcode:
resourcestring
  _sTest = 'Zeile1'+#13#10+'Zeile2';
so werden das, intern, drei Konstanten eine mit dem Wert Zeile1, eine mit dem Wert #13#10, und eine mit dem Wert Zeile2.

Da ein Stringliteral nicht mehr als 255 Zeichen lang sein darf, kann es bei Variante 1 unter Umständen eng werden, Variante 2 umgeht das Problem.

Zero1 10. Jun 2003 19:02

huhu seehase :)

ich weis nicht wie ich dir danken soll aber du bist einfach da champ *g*

aber many thx :)

zero1


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz