1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| //---------------------------------------------------------------------------
void __fastcall TIniFileEditorEditForm::EdSearchChange(TObject *Sender)
{
TimerSearch->Enabled = false;
TimerSearch->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TIniFileEditorEditForm::EdSearchKeyPress(TObject *Sender, System::WideChar &Key)
{
if (Key == VK_RETURN)
{
Key = 0;
Search(true);
}
}
//---------------------------------------------------------------------------
void __fastcall TIniFileEditorEditForm::TimerSearchTimer(TObject *Sender)
{
Search();
}
//---------------------------------------------------------------------------
void TIniFileEditorEditForm::Search(bool ForceNext/* = false*/)
{
TTreeNode *FoundNode = NULL;
// Le noeud sélectioné contient déjà ce texte !
if ( ! ForceNext && TreeViewIni->Selected && ContainsText(TreeViewIni->Selected->Text, EdSearch->Text))
FoundNode = TreeViewIni->Selected;
if ( ! FoundNode)
{
// Par de noeud en cours
TTreeNode *SearchNode = TreeViewIni->Selected ? ForceNext ? TreeViewIni->Selected->GetNext() : TreeViewIni->Selected : TreeViewIni->Items->GetFirstNode();
while (SearchNode && ! FoundNode)
{
if ( ! ContainsText(SearchNode->Text, EdSearch->Text))
SearchNode = SearchNode->GetNext();
else
FoundNode = SearchNode;
}
// Si pas trouvé, remonte au début
if ( ! FoundNode && TreeViewIni->Selected)
{
TTreeNode *SearchNode = TreeViewIni->Items->GetFirstNode();
while (SearchNode && ! FoundNode && (SearchNode != TreeViewIni->Selected))
{
if ( ! ContainsText(SearchNode->Text, EdSearch->Text))
SearchNode = SearchNode->GetNext();
else
FoundNode = SearchNode;
}
}
}
if (FoundNode)
{
TreeViewIni->Selected = FoundNode;
FoundNode->MakeVisible();
}
TimerSearch->Enabled = false;
} |