前回の幅の太さを変えても実線にならない方法は解決したのですが。
今回は、DrawPathの引数にTPenを渡し、そのスタイルによって線種を変えようと内部のプログラムを変更しようとしたのですが。
procedure DrawPath(Path : TPath;
ACanvas : TCanvas;
Color : TColor;
Width : Integer;
PStyle : TPen;
Cap : TCapStyle = csFlat);
var
PenStyle : array of Double;
begin
// 描画する線種を引数から判断しセットする。
Case PStyle.Style of
psSolid :
begin
SetLength(PenStyle,2);
PenStyle := [1e6, 1];
end;
psDot :
begin
SetLength(PenStyle,2);
PenStyle := [1, 1];
end;
psDashDot :
begin
SetLength(PenStyle,4);
PenStyle := [2, 1, 1, 1];
end;
psDashDotDot :
begin
SetLength(PenStyle,6);
PenStyle := [2,1,1,1,1,1];
end;
end;
のようにしているのですが、
[エラー] PathUtils.pas(221): 順序型が必要です
[エラー] PathUtils.pas(225): '集合型' と 'dynamic array' には互換性がありません
[エラー] PathUtils.pas(229): '集合型' と 'dynamic array' には互換性がありません
[エラー] PathUtils.pas(233): '集合型' と 'dynamic array' には互換性がありません
とでて、コンパイルが通りません。
どなたかご教授お願いいたします。
順序型が必要です --> Case PStyle.Style of
'集合型' と 'dynamic array' には互換性がありません --> PenStyle := [1e6, 1];
んで
PenStyle : array of Double;
こんな宣言だからね。
配列とか、case 文、順序型、集合型 など文法の基礎を全く理解してない。
ちゃんと、基礎を勉強した方が上達が速いよ。
できましたw
すいません^^;
> [エラー] PathUtils.pas(221): 順序型が必要です
集合型は順序型ではないので、何らかの方法で順序型に変換する必要があります。
> [エラー] PathUtils.pas(225): '集合型' と 'dynamic array' には互換性がありません
> [エラー] PathUtils.pas(229): '集合型' と 'dynamic array' には互換性がありません
> [エラー] PathUtils.pas(233): '集合型' と 'dynamic array' には互換性がありません
配列に代入するとき、いきなり代入は無理です。
ヘルプの「動的配列」にかかれています。まずは、ヘルプで調べてみてください。
つっかさんの
> 配列とか、case 文、順序型、集合型 など文法の基礎を全く理解してない。
> ちゃんと、基礎を勉強した方が上達が速いよ。
と言われるように、基礎は必須ですね。
ヘルプだけでわからないようであれば、初心者向けの書籍を買うことをお薦めします。
Helpを見ながらやったら出来ました^^;
Case PStyle.Style of
psSolid : // 実線
begin
SetLength(PenStyle,2);
PenStyle[0] := 1e6;
PenStyle[1] := 1;
end;
psDot : // 点線
begin
SetLength(PenStyle,2);
PenStyle[0] := 1;
PenStyle[1] := 1;
end;
psDash: // 破線
begin
SetLength(PenStyle,2);
PenStyle[0] := 2;
PenStyle[1] := 1;
end;
psDashDot : // 一点鎖線
begin
SetLength(PenStyle,4);
PenStyle[0] := 2;
PenStyle[1] := 1;
PenStyle[2] := 1;
PenStyle[3] := 1;
end;
psDashDotDot : // 二点鎖線
begin
SetLength(PenStyle,6);
PenStyle[0] := 2;
PenStyle[1] := 1;
PenStyle[2] := 1;
PenStyle[3] := 1;
PenStyle[4] := 1;
PenStyle[5] := 1;
end;
end;
で出来ましたのでw
ツイート | ![]() |