Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#29

Re: Couldn't convert varient of type (NULL) into type (Strin

  Alt 13. Mai 2007, 22:28
Hallo,

ich möchte noch eine Lanze für die PageProducer-Komponenten brechen. Hier wäre eine Gelegenheit für den Einsatz von TDataSetPageProducer. Einfach das HTML-Template zuweisen:

XML-Code:

<tr>
<td width=9% bgcolor=#666666><font color=#FFFFFF size=2 face=Arial> <#FIELD name=KLASSEN></font></td>
<td width=9% bgcolor=#666666><font color=#FFFFFF size=2 face=Arial> <#FIELD name=S></font></td>
<td width=9% bgcolor=#666666><font color=#FFFFFF size=2 face=Arial> <#FIELD name=FUER></font></td>
<td width=9% bgcolor=#666666><font color=#FFFFFF size=2 face=Arial> <#FIELD name=WER></font></td>
<td width=9% bgcolor=#666666><font color=#FFFFFF size=2 face=Arial> <#FIELD name=FACH</font></td>
<td width=9% bgcolor=#666666><font color=#FFFFFF size=2 face=Arial> <#FIELD name=RAUM></font></td>
<td width=37% bgcolor=#666666><font color=#FFFFFF size=2 face=Arial> <#FIELD name=BEMER_SCH></font></td>
</tr>
Und ein kleines Stück Code:

Delphi-Quellcode:
procedure TDataModel.DataSetPageProducerHTMLTag(Sender: TObject; Tag: TTag;
  const TagString: String; TagParams: TStrings; var ReplaceText: String);
var
  fldName: string;
  producer: TDataSetPageProducer;
begin
  producer := Sender as TDataSetPageProducer;
  if (Tag = tgCustom) and SameText(TagString, 'FIELD') then
  begin
    fldName := TagParams.Values['name'];
    if Assigned(producer.DataSet.Fields.FindField(fldName))
      then ReplaceText := VarToStr(producer.DataSet.FieldValues[fldName])
      else ReplaceText := Format('[?%s]', [fldName]);
  end;
end;

{ ... }

procedure TDemoForm.ButtonClick(Sender: TObject);
begin
  with DataModel do
  begin
    Query.Open;
    while not Query.Eof do
    begin
      Memo.Lines.Add(DataSetPageProducer.Content);
      Query.Next;
    end;
    Query.Close;
  end;
end;
So richtig gut wird das ganze mit verketteten Producern.

Darüber meditieren ihr solltet.

Gute Nacht
  Mit Zitat antworten Zitat