diff --git a/components/turbopower_ipro/iphtml.pas b/components/turbopower_ipro/iphtml.pas index 0aec5f66bb..26b407beb5 100644 --- a/components/turbopower_ipro/iphtml.pas +++ b/components/turbopower_ipro/iphtml.pas @@ -14703,64 +14703,55 @@ end; procedure TIpHtmlNodeSELECT.Reset; var - i, j, k : Integer; - S, SelectedText : string; - B : PAnsiChar; + SelectedText : string; + + procedure ResetSub(Opt: TIpHtmlNodeOPTION); + var + k: Integer; + B: PAnsiChar; + S: String; + begin + if (Opt.FChildren.Count > 0) + and (TObject(Opt.FChildren[0]) is TIpHtmlNodeText) then begin + S := TIpHtmlNodeText(Opt.FChildren[0]).EscapedText; + GetMem(B, length(S) + 1); + try + TrimFormatting(S, B); + if Multiple then begin + k := TListBox(FControl).Items.Add(Trim(B)); + TListBox(FControl).Selected[k] := Opt.Selected; + end else begin + TComboBox(FControl).Items.Add(Trim(B)); + if Opt.Selected then + SelectedText := Trim(B); + end; + finally + FreeMem(B); + end; + end; + end; + +var + i, j: Integer; + OptGroup: TIpHtmlNodeOPTGROUP; begin SelectedText := ''; - if Self.Multiple then + if Multiple then TListBox(FControl).Clear else TComboBox(FControl).Clear; for i := 0 to Pred(FChildren.Count) do if TObject(FChildren[i]) is TIpHtmlNodeOPTION then - with TIpHtmlNodeOPTION(FChildren[i]) do begin - if (FChildren.Count > 0) - and (TObject(FChildren[0]) is TIpHtmlNodeText) then begin - S := TIpHtmlNodeText(FChildren[0]).EscapedText; - GetMem(B, length(S) + 1); - try - TrimFormatting(S, B); - if Self.Multiple then begin - j := TListBox(FControl).Items.Add(Trim(B)); - TListBox(FControl).Selected[j] := Selected; - end else begin - TComboBox(FControl).Items.Add(Trim(B)); - if Selected then - SelectedText := Trim(B); - end; - finally - FreeMem(B); - end; - end; - end - else - if TObject(FChildren[i]) is TIpHtmlNodeOPTGROUP then - with TIpHtmlNodeOPTGROUP(FChildren[i]) do begin - for j := 0 to Pred(FChildren.Count) do - if TObject(FChildren[j]) is TIpHtmlNodeOPTION then - with TIpHtmlNodeOPTION(FChildren[j]) do begin - if (FChildren.Count > 0) - and (TObject(FChildren[0]) is TIpHtmlNodeText) then begin - S := TIpHtmlNodeText(FChildren[0]).EscapedText; - GetMem(B, length(S) + 1); - try - TrimFormatting(S, B); - if Self.Multiple then begin - k := TListBox(FControl).Items.Add(Trim(B)); - TListBox(FControl).Selected[k] := Selected; - end else begin - TComboBox(FControl).Items.Add(Trim(B)); - if Selected then - SelectedText := Trim(B); - end; - finally - FreeMem(B); - end; - end; - end; - end; - if not Self.Multiple and (SelectedText <> '') then + // Option + ResetSub(TIpHtmlNodeOPTION(FChildren[i])) + else if TObject(FChildren[i]) is TIpHtmlNodeOPTGROUP then begin + // Option Group + OptGroup := TIpHtmlNodeOPTGROUP(FChildren[i]); + for j := 0 to Pred(OptGroup.FChildren.Count) do + if TObject(OptGroup.FChildren[j]) is TIpHtmlNodeOPTION then + ResetSub(TIpHtmlNodeOPTION(OptGroup.FChildren[j])); + end; + if not Multiple and (SelectedText <> '') then with TComboBox(FControl) do ItemIndex := Items.IndexOf(SelectedText); end; @@ -14820,8 +14811,7 @@ begin inherited; end; -procedure TIpHtmlNodeTEXTAREA.AddValues(NameList, - ValueList: TStringList); +procedure TIpHtmlNodeTEXTAREA.AddValues(NameList, ValueList: TStringList); begin NameList.Add(Name); ValueList.Add(TMemo(FControl).Text);