Einzelnen Beitrag anzeigen

josefkoller

Registriert seit: 22. Okt 2012
49 Beiträge
 
#16

AW: Prozedur zusammenbauen

  Alt 17. Nov 2012, 22:42
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.
  Mit Zitat antworten Zitat