![]() |
frage zu treeview
Delphi-Quellcode:
hum weis einer maybe wie ich den text bekomme? wenn ich zb auf das item
procedure TForm1.InfolistClick(Sender: TObject);
begin if infolist.Selected.Text='test' then memo1.text('test blablabla'); end; test clicke in treeview sollte in der memo1 ('test blablabla'); geschrieben sein? weis einer wo das prob liegt? danke schon im vorraus! zero1 |
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; |
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] |
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. |
Code:
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?
Memo1.Text:=Node.Text;
zero1 |
Moin Zero,
um welche Textmengen geht's denn so? (je Memo Eintrag, und gesamt) |
hiho hase :p
ca 100 - 150 lines zero1 |
Moin Zero,
gesamt oder je... |
gesamt *g*
also ich benötige ca 100-150 zeilen! die länge is dabei egal! deswegen auch
Delphi-Quellcode:
zero1
then memo1.text('test blablabla........................ etc');
|
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 = //... //... |
jo aber wie ruf ich dan _rstext auf? wenn jemand zb auf test click?
|
Moin Zero1,
ein Resourcestring kannst Du genauso verwenden, wie eine Stringkonstante, also z.B. an Memo1.Text zuweisen. |
sample plz ich versteh das mit Resourcestring nicht wirklich *g* sorry
zero1 |
Moin Zero,
Delphi-Quellcode:
Memo1.Text := _rsText1;
|
Delphi-Quellcode:
und es gibt ja mehre zeilen bei treeview zum auswählen!
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin If Node<>Nil then Memo1.Text:=_rs1.Text; end; 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 |
Moin Zero1,
dazu ein paar Tips:
;-) |
hum ich spiel da nun ca 30min herum und es will einfach ned! soviele varianten woAAAAA :p
büdde help zero1 |
Moin Zero,
Jens' Beispiel mit dem OnChange Ergeignis:
Delphi-Quellcode:
Dein Source aus dem Eingangsposting:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin If Node<>Nil then Memo1.Text:=Node.Text; end;
Delphi-Quellcode:
Ergibt zusammen
procedure TForm1.InfolistClick(Sender: TObject);
begin if infolist.Selected.Text='test' then memo1.text('test blablabla'); end;
Delphi-Quellcode:
Mein Hinweis mit der Zuweisung eines Resourcestrings
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin If Node<>Nil then begin if Node.Text = 'test' then Memo1.Text:='test blablabla'; end; end;
Delphi-Quellcode:
Das jetzt zusammengeführt ergibt:
Memo1.Text := _rsText1;
Delphi-Quellcode:
Was mir allerdings ein Rätsel ist:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin If Node<>Nil then begin if Node.Text = 'test' then Memo1.Text := _rsText1; end; end; Wie bist Du denn hierauf gekommen?
Delphi-Quellcode:
Memo1.Text:=_rs1.Text;
|
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:
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 :(
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;
Delphi-Quellcode:
wie bekomme ich das gelöst?
if Node.Text = 'Info2' then
Memo1.Text := _rsText2; und zu
Delphi-Quellcode:
wollte nicht alles auschreiben*g* sozusagen abgekürzt :p
_rs1.Text;
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 |
Moin Zero,
Zitat:
Wenn fortgeschrieben werden soll dann mit Lines.Add(....). Das mit dem Überschreib-/Einfügemodus wird, Überraschung, mit der Einfügentaste umgeschaltet. ;-) |
hiho :)
ha many thx nun weis ich wie ichs wegbekomme *g* nun zu treeview : ![]() 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 |
Moin Zero,
Zitat:
|
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: |
genau mwiesbau
aber die texte soll nicht in einer .txt gesaved sein manche leute deleten das gleich *g* also lieber gleich drinen :p zero1 |
hum bidde help spiele mich schon ne lange zeit damit herum aber irgendwie will es nicht klappen :(
Delphi-Quellcode:
egal was ich mache es nimmt immer den letzten abschnitt:
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;
Delphi-Quellcode:
er überspringt den anfangt und nimmt gleich den 2ten teil :(
if Node.Text = 'Proxy' then
Memo1.text := '2ter TEEEEEEST'; end; bitte um hilfe! danke schon mal!! zero1 |
Moin Zero,
bei mir funzt das problemlos. Auch wenn Du ein begin/end zuviel hast. |
die gleiche sources? wenn du auf info clickst kommt text bzw wenn du auf proxy clickst ??? waoAAA?? kann ja nicht an delphi 6 liegen???
|
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:
Keine Probleme.
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; 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. ;-) |
Zitat:
|
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 |
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 :( |
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:
dann wird dies vom Compiler als eine (Short) Stringkonstante mit dem Wert Zeile1#13#10Zeile2 angesehen und angelegt.
resourcestring
_sTest = 'Zeile1'#13#10'Zeile2'; Schreibt man hingegen
Delphi-Quellcode:
so werden das, intern, drei Konstanten eine mit dem Wert Zeile1, eine mit dem Wert #13#10, und eine mit dem Wert Zeile2.
resourcestring
_sTest = 'Zeile1'+#13#10+'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. |
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