喫茶XRAYトップページ

[スレッド全体
]

[3064] リージョンコンポーネントを使われている方は見えませんか?返信 削除
2010/2/11 (木) 15:48:59 KSCHomePage
リージョンコンポーネントを使われている方は見えませんか?

KSCです。

変わった形のメインフォームを作りたくて、フォームをリージョンするコンポーネントを
探しています。

【今までの経過】
 ・サイトでの検索において、
  http://delphiholic.hopeseeds.com/?day=20070826 にて
  「RgnComp」や「formshape」「formrgn」の紹介
  「RgnComp」を試したかったのですが、ソースが見つからず...。
  「formshape」って、tmssoftwareのやつだと思うけどバルーンにしか化けないような...。
  「formrgn」のソースは、見つけたのでインストールを試みる事にしました。
 ・「formrgn」のインストールについて、
  v.04.05.99 → (1)
   http://www.delphikingdom.com/asp/viewitem.asp?catalogid=83
  v.21.06.99 → (2)
   http://torry.net/pages.php?id=94
 ・(1)をDelphi2007へインストールしようとしたら旧バージョン用だったので、
  「DsgnIntf」で、引っかかりました。
    ↓
   http://support.codegear.com/article/37621 を参考にして、
   ☆宣言文のユニット名「DsgnIntf」 を 「DesignIntf」 と 「DesignEditors」に変更。
   ☆「Requires」に「designide.dcp」を追加。
    ↓
   インストール成功!
 ・(1)より(2)の方が日付が新しかったので、Delphi2007へ再インストール。
  (1を削除後に新たに2用のパッケージを作成)
    ↓
   (1)と同様に修正し、インストールは成功したが、
   そのコンポーネントを使った簡単なアプリをコンパイルしようとすると、
   「[DCC エラー] DesignEditors.pas(610): F1026 ファイル 'Proxies.dcu' が見つかりません」
   とエラー表示されてします。

【質問】
・'Proxies.dcu' が見つかりません と言うエラーを回避する方法を知りませんか?
・皆さんはリージョンコンポーネントを使っていますか?
 使っている場合、どのようなものか教えてくれませんか?

長文で申し訳ありません。


[3065] Re:リージョンコンポーネントを使われている方は見えませんか?返信 削除
2010/2/11 (木) 17:11:14 Mr.XRAY
▼ KSCさん,

添付の図のやつですよね.

> ・'Proxies.dcu' が見つかりません と言うエラーを回避する方法を知りませんか?

これ出ます.
理由は,コンポーネントの提供方法にあるんですが.
ちょっと説明が難しいです.調べてみないと分かりません.

Delphi5だか6からかは忘れましたが.プロパティエディタがある
コンポーネント(オブジェクト・インスペクタでクラス型とかを編集可能
にしたもの)は,コンポーネント本体と登録(プロパティエディタ)を別ユニット
にしなければいけなくなったんです.

拙作コンポの例だと
plPrev.pas    コンポーネント本体
plPrevReg.pas プロパティエディタとコンポ登録用ユニット

DesignIntfとDesignEditorsはその登録(プロパティエディタ)のユニットに
ussesしないと'Proxies.dcu' が見つかりませんのエラーがでます.

http://torry.net/pages.php?id=94
はDelphi4までなので分離してないためですね.

どのファイルをインストールしたのでしょう.
それが分かれば多少は,お役に立つかも知れません.


[3066] Re2:リージョンコンポーネントを使われている方は見えませんか?返信 削除
2010/2/11 (木) 17:15:21 Mr.XRAY
> それが分かれば多少は,お役に立つかも知れません.

むむむ.
これ,dfmファイルがありますね.
これはちょっと面倒な感じがします.
これはフォームファイルで,これをIDEで設計時に表示するので,
この部分もプロパティエディタのユニットにコードを移動させる
必要がありますから.

(^^;

[3067] Re3:リージョンコンポーネントを使われている方は見えませんか?返信 削除
2010/2/11 (木) 17:36:53 KSCHomePage
KSCです。

この短時間に多くの情報を頂き、ありがとうございます。
インストールは、添付の図のようにファイル追加しました。

> これ,dfmファイルがありますね.
> これはちょっと面倒な感じがします.
> これはフォームファイルで,これをIDEで設計時に表示するので,
> この部分もプロパティエディタのユニットにコードを移動させる
> 必要がありますから.


フォームファイルがあると、そんなに厄介なのですか?


[3068] Re4:リージョンコンポーネントを使われている方は見えませんか?返信 削除
2010/2/11 (木) 18:19:55 Mr.XRAY
▼ KSCさん

> フォームファイルがあると、そんなに厄介なのですか?

厄介ですね (^^)

>変わった形のメインフォームを作りたくて、フォームをリージョンするコンポーネントを
>探しています。


簡単のでしたら,自分で作成してしまうのも手かも知れません.

// 逆三角形のフォーム
procedure TForm1.FormCreate(Sender: TObject);
  var
    Rgn1  : HRgn;
    pntXY : array [0..3] of TPoint;
  begin
    { 多角形の作成 }
    pntXY[0].x  :=  0;
    pntXY[0].y  :=  0;
    pntXY[1].x  :=  width div 2;
    pntXY[1].y  :=  height;
    pntXY[2].x  :=  width;
    pntXY[2].y  :=  0;
    pntXY[3].x  :=  0;
    pntXY[3].y  :=  0;
    { リージョンの割り当て }
    Rgn1  :=  CreatePolygonRgn(pntXY, 3, Winding);
    SetWindowRgn(Handle, Rgn1, True);
end;


複雑な形のはパスを使うしかないです.

これは文字の輪郭を切り取っています.
http://mrxray.on.coocan.jp/Halbow/VCL01.html#VChap1-7

ウィンドウを四角以外の形にする
http://www.geocities.jp/asumaroyuumaro/program/tips/setwindowrgn.html

Bitmapから画像の形のリージョンを得る
http://www.geocities.jp/asumaroyuumaro/program/tips/createregionfrombitmap.html


丸いフォームとか...

unit SetWindowRegionU;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
  end;

var
  Form1: TForm1;
  OriginX, OriginY: Integer;    // holds the center coordinates of the window

implementation

uses Math;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
  NewShape: HRGN;    // holds the region
begin
  {create a circular region}
  NewShape := CreateEllipticRgn(GetSystemMetrics(SM_CXBORDER)+3,
                                GetSystemMetrics(SM_CYCAPTION)+3,
                                GetSystemMetrics(SM_CXBORDER)+103,
                                GetSystemMetrics(SM_CYCAPTION)+103);

  {determine the center of the circle. this is used when drawing the numbers
   of the clock}
  OriginX := (GetSystemMetrics(SM_CXBORDER)+90) div 2;
  OriginY := ((GetSystemMetrics(SM_CXBORDER)+90) div 2)-3;

  {set the window region to the circular region. this will create
   a round window}
  SetWindowRgn(Handle, NewShape, TRUE);
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  iCount: Integer;                      // a general loop control variable
  Hour, Minute, Second, MilSec: Word;   // used to decode the time
begin
  {set the background mode to transparent for drawing text}
  SetBkMode(Canvas.Handle, TRANSPARENT);

  {draw a highlighted bevel}
  Canvas.Pen.Color := clWhite;
  Canvas.Pen.Width := 2;
  Arc(Canvas.Handle, 1, 1, 98, 98, 98, 1, 1, 98);

  {draw a shadowed bevel}
  Canvas.Pen.Color := clBtnShadow;
  Arc(Canvas.Handle, 1, 1, 98, 98, 1, 98, 98, 1);

  {for every hour of the day...}
  for iCount := 1 to 12 do
  begin
    {...draw an hour measurement in a circular form around the window}
    Canvas.TextOut(Trunc(Sin(((360/12)*iCount)*(PI/180))*40)+OriginX,
                   Trunc(-Cos(-((360/12)*iCount)*(PI/180))*40)+OriginY,
                   IntToStr(iCount));
  end;

  {retrieve the current time in a useable format}
  DecodeTime(Now, Hour, Minute, Second, MilSec);

  {translate military hours to civilian hours}
  if Hour>12 then Hour := Hour-12;

  {draw the hour hand}
  Canvas.Pen.Color := clBlack;
  Canvas.MoveTo(50, 50);
  Canvas.LineTo(Trunc(Sin(((360/12)*Hour)*(PI/180))*30)+50,
                Trunc(-Cos(-((360/12)*Hour)*(PI/180))*30)+50);

  {draw the minutes hand}
  Canvas.MoveTo(50, 50);
  Canvas.LineTo(Trunc(Sin(((360/60)*Minute)*(PI/180))*40)+50,
                Trunc(-Cos(-((360/60)*Minute)*(PI/180))*40)+50);

  {draw the seconds hand}
  Canvas.Pen.Color := clRed;
  Canvas.MoveTo(50, 50);
  Canvas.LineTo(Trunc(Sin(((360/60)*Second)*(PI/180))*40)+50,
                Trunc(-Cos(-((360/60)*Second)*(PI/180))*40)+50);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  {repaint the form once per second}
  Repaint;
end;

procedure TForm1.WMNCHitTest(var Msg: TWMNCHitTest);
begin
  {this allows the user to drag the window by clicking anywhere on the form}
  inherited;
  Msg.Result := HTCAPTION;
end;

end.


[3069] 画像関係といえばJunkiさん返信 削除
2010/2/11 (木) 18:35:49 Mr.XRAY
> 簡単のでしたら,自分で作成してしまうのも手かも知れません.

忘れていました.
画像処理といえばJunkiさんでした.

http://blog.livedoor.jp/junki560/archives/30287059.html
の ・非矩形なフォーム(1)〜(6)と
3分で出来る非矩形フォーム ですね.


[3070] Re6:リージョンコンポーネントを使われている方は見えませんか?返信 削除
2010/2/11 (木) 18:44:59 KSCHomePage
KSCです。

情報ありがとうございます。

> 画像処理といえばJunkiさんでした.
>
> http://blog.livedoor.jp/junki560/archives/30287059.html


Junkiさんのコードを参考に自分で作ってみます。

それとサイトのトップページのニュースにあった
「Yahoo! JAPANのWeb APIの使用例 ニュースの検索」と言う
記事に飛びついたのですが、

【03_XMLデータバインディングの手順】
http://mrxray.on.coocan.jp/Delphi/plSamples/920_WebAPI_XML-RPC.htm#03

にある「XMLデータバインディング」のウィザードって、Indy10からの
ものなのでしょうか?

私は、Indyを使った事が無いのでRAD Studio2007のインストール時のままなので
Indyのバージョンは「9」になっています。

やはりバージョンアップが必要でしょうか?

[3071] XMLデータバインディング返信 削除
2010/2/11 (木) 18:52:19 Mr.XRAY
▼ KSCさん

> 「Yahoo! JAPANのWeb APIの使用例 ニュースの検索」と言う
> 記事に飛びついたのですが、


おおっ,興味を持ってくださる方が.
実は,郵便場号の[921]を前にテストしていたのですが,今回,あの有名な
某掲示板で他の方式の質問があったので,それを整備.
うん? 待てよ.Yahoo! のも... というわけです.

> にある「XMLデータバインディング」のウィザードって、Indy10からの
> ものなのでしょうか?


これは,DelphiのXML関係の機能ですね.
確かPro版ではDelphi2007からだったと思います.


[3072] Re:XMLデータバインディング返信 削除
2010/2/11 (木) 19:03:35 KSCHomePage
KSCです。

> > 「Yahoo! JAPANのWeb APIの使用例 ニュースの検索」と言う
> > 記事に飛びついたのですが、
>
> おおっ,興味を持ってくださる方が.


マスターのおかげで、色々な開発の入り口を覗かせて頂いています!!

> > にある「XMLデータバインディング」のウィザードって、Indy10からの
> > ものなのでしょうか?
>
> これは,DelphiのXML関係の機能ですね.
> 確かPro版ではDelphi2007からだったと思います.


すいません。
「その他」を選択した際には、ツリー表示されていなかったのですが、
「カスタマイズ」を選択したら、ありました。

これって何で「その他」選択した際に出てないのでしょうかね?


[3074] Re2:XMLデータバインディング返信 削除
2010/2/11 (木) 19:27:19 Mr.XRAY
▼ KSCさん

> 「その他」を選択した際には、ツリー表示されていなかったのですが、
> 「カスタマイズ」を選択したら、ありました。


あらっ? 何ででしょう.
う〜ん.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82