hvad er der galt her?

Tags:    delphi

den siger item hver gang også når jeg mærker en subitem

procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
NyItem, NySubItem : TTreeNode;
begin

if treeview1.selected = NyItem then
showmessage('item');

if treeview1.selected = NySubItem then
showmessage('Sub item');

end;



9 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
TmpNode : TTreeNode;
begin
TmpNode := TreeView1.GetNodeAt(X,Y);
if (TmpNode <> nil) then
begin
if (TmpNode.HasChildren) then
Caption := 'Item'
else
Caption := 'SubItem';
end;
end;




Det er vel fordi at NyItem, NySubItem er sat som lokal varianter uden at blive initialized!

Her er et eksempel der tjeller om foerste Item i din TreeView1 er valgt:

if (TreeView1.Items.Count > 0) and (Treeview1.Items[0] = Treeview1.Selected) then
ShowMessage('"'+Treeview1.Items[0].Text+'" er valgt!');

[Redigeret d. 11/05-04 20:21:52 af Søren Klit Lambæk]



kunne ik få det til at virke. men det jeg vil er når jeg mærker en item så skal den fortælle mig om det er en item eller en subitem



er det muligt at køre den kode på dobble click eventen?

har prøvet, men virker ik'



Det kan du godt men saa skal du havde positionen af cursoren lagt i en global variant som kan bruges i din donneltklik event eller benytte GetCursorPos()! Og ScreenToClient() til at konventere skaerm position til client window position!



Den 12-05-04 19:37 skrev Søren Klit Lambæk følgende:
-----------------------------------------------------------------------------
Det kan du godt men saa skal du havde positionen af cursoren lagt i en global variant som kan bruges i din donneltklik event eller benytte GetCursorPos()! Og ScreenToClient() til at konventere skaerm position til client window position!
-----------------------------------------------------------------------------

hvordan vil koden så se ud?

kan du ikke give mig koden?



Du skal bare lave en global variant af enten Integers eller en TPoint.

var
P : TPoint;

...og i din mouse move event kan du skrive noget lign.

P.X := X;
P.Y := Y;

Din P vil du saa kunne bruge i din dobbelkt klik event!

(Hvad er det med folk? - de vil havde det hele serveret paa en soelvfad saa de er fri for selv at taenke! :D )...



er jeg på rette spor?
denne virker ikke, men kan du give et lille hint.

procedure TForm1.TreeView1DblClick(Sender: TObject);
var
TmpNode : TTreeNode;
P : TPoint;
X, Y : integer;
begin
P.X := X;
P.Y := Y;

TmpNode := TreeView1.ScreenToClient(X,Y);
if (TmpNode <> nil) then
begin
if (TmpNode.HasChildren) then
Caption := 'Item'
else
Caption := 'SubItem';
end;

end;



Taet paa og i lige vel langt fra :D

Fold kodeboks ind/udKode 


Jeg har skrevet en lille kommentar saa du kan se hvad koderne rent faktisk goer! Dette bliver mit sidste indlaeg i denne traad!

Held og Lykke



t