Hi,
danke für die antworten. Nur, es ist nichts passendes dabei.
Das mit dem Polygon muß ich mir nochmal überlegen.
Ich hab mittlerweile im Netz auch weitergesucht.
Zwei Möglichkeiten hab ich da gefunden:
1. Das ganze mit case zu machen. Also
Delphi-Quellcode:
case counts of
1:
begin
for b:=0 to lns-1 do
DrawTextAcrossCols([arrColText[0,b]]); <-- ein Array
end;
2:
begin
for b:=0 to lns-1 do
DrawTextAcrossCols([arrColText[0,b], [arrColText[1,b]]); <-----
end;
usw. Mann müßte aber einfach irgendwann aufhören.
Ist also auch nicht dynamisch erstellbar.
Oder kann man per Code so ein variables case Construkt erstellen?
2. Möglichkeit
Delphi-Quellcode:
unit formTest;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TProcedure =
procedure;
type
TForm1 =
class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure Foo;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var p: TProcedure;
begin
p := self.MethodAddress('
Foo');
if Assigned(p)
then
p;
end;
procedure TForm1.Foo;
begin
MessageDlg('
Hallo!',mtInformation,mbOKCancel,0);
end;
end.
Das klappt aber bei mir nicht.
p wird nicht assigned, ist leer:
Ich hab das bei mir so probiert:
Delphi-Quellcode:
type
TProcedure = procedure;
..
public
procedure DrawTextAcrossCols(const arrColumnText: Array of string; Background:TColor = clNone);
procedure DrawTextAcrossColsEx(const arrColumnText: Array of string);
procedure prepare(const arrColumnText: Array of string);
.....
procedure TTest.DrawTextAcrossColsEx(const arrColumnText: Array of string);
var prepare:string;
P:TProcedure
begin
..
prepare:='([';
for a:=0 to high(arrColumnText) do
prepare:=prepare+'arrColText[0,b],';
prepare:=copy(prepare,0,length(prepare)-1);
prepare:=prepare+'])';
p := self.MethodAddress('prepare');
if Assigned(p) then p;
..
end;
procedure TTest.peparedDrawGrid(const arrColumnText: Array of string);
begin
//leer;
end;
Diese zweite Möglichkeit scheint mir die Geeignete zu sein. Nur: es funktioniert so nicht. P ist immer leer.
Vielleicht seht ihr jetzt besser, was ich erreichen will. Den Tipp, daß ich mir Array Tutorials anschauen soll, finde ich sehr sinnvoll, nur hat das nichts mit dem Aufruf einer Prozedur zu tun, die "zusammengebastelt" werden soll.
Könnt ihr mir vielleicht bei diesem Aufruf in der 2. Möglichkeit auf die Sprünge helfen?
Danke für den Link:
Thema:
http://rvelthuis.de/articles/articles-openarr.html
Muß mal schauen, was da drin steht.
Josef
P.S.