07. februar 2003 - 18:53Der er
11 kommentarer og 1 løsning
Søg i Treeview
Jeg har følgende på min form:
-TTreeView -TEdit -TButton
Når man indtaster et søge ord i TEdit og derefter trykker på TButton, så skal den kunne finde et sted i TTreeView hvor søgeordet står. Hvordan kan man gøre det?
Kommunerne har digitaliseret indgangen for borgerne. Men bag skærmen håndteres mange arbejdsgange stadig manuelt mellem systemer, mails og organisatoriske siloer.
function GetNodeByText (HTML : TTreeView; AValue:String; AVisible: Boolean): TTreeNode; var Node: TTreeNode; begin Result := nil; if HTML.Items.Count = 0 then Exit; Node := HTML.Items[0]; while Node <> nil do begin if UpperCase(Node.Text) = UpperCase(AValue) then begin Result := Node; if AVisible then Result.MakeVisible; Break; end; Node := Node.GetNext; end; end;
{$R *.dfm}
procedure TForm1.soegknapClick(Sender: TObject); var tn : TTreeNode; begin tn:=GetNodeByText(HTML,soegfelt.Text,CheckBox1.Checked); if tn = nil then ShowMessage('Not found!') else begin HTML.SetFocus; tn.Selected := True; end;
end;
Men det virker så kun sådan at den finder noget hvis man skriver præcist det samme som en item hedder. Dvs. at hvis der en item som hedder: <form></form>, så SKAL man skrive det, for at den finder den item. Ellers så siger den not found. Og det er sådan den kode virker.
Hvordan gør jeg så sådan at den søger efter alt, selvom man også skrive "b" eller "form", eller hvad som helst. Den skal bare find en item der indholder ord/bogstav som man har indtastet i edit'en.
Okay, nu virker det :) Men hvordan gør jeg sådan at hvis jeg trykker på TButton igen, så skal den finde et andet sted hvor søgeordet indholder? En slags FindNext funktion.
Du ændre din "while Node <> nil do", så man fortsætter fra det sted man forlød løkken sidst. Det er for øvrigt en noget ustruktureret programmering at afbryde en løkke med et "break"
Jeg har ikke lyst til at lave programmet for dig. Det lærer du ikke selv noget ved. Som sagt er det din While-løkke du skal kikke på :o)
PS: skalshoi har besvaret dit oprindelige spørgsmål.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.