喫茶XRAYトップページ

[▲前のスレッド]

[11443] 世の中には画像作成用ソフトが存在する返信 削除
2017/10/15 (日) 08:12:32 Mr.XRAY
[パソコンに話をさせる方法を教えてください。]
http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+201710/17100004.txt

↑ のスレッドの最後にこんなのがあります.

>長年の夢だったので、思わず、拍手してしまいました。

これを読んでいて思ったのですが,質問には
「音声合成」という用語はありません.また VBScript という表現もありません.
これらの用語を知っていることが「常識」なのかは分かりませんが,
このような用語を,この方が知らないことは事実のような気がします.
そこで,もしかしたらと思いました.

「アイコン」というのは,一般的には EXE 等,あるオブジェクトを特徴づける
画像のことです.
Delphi の場合は TIcon クラスを使用する画像形式の意味でも使われています.

[TSpeedButtonのGlyphプロパティに関連付けうる画像の作り方]
https://forums.embarcadero.com/thread.jspa?threadID=254688&tstart=0

[TSpeedBtnのGlyphプロパティに読み込みうるBitmapファイルを作成するには?]
https://forums.embarcadero.com/thread.jspa?threadID=247221&tstart=15

というのがあります.
この方は,発言というか,内容というか,少しズレてはいるのですが,

>昔のDelphiでは、【ツール】メニューの中のサブメニューを使えば、それを作成することができたと

と書いています.なければ自分で用意しなければと普通は思うのではないかと
思うのですが,この方はちょっと違っています.

おそらく,アイコンの持つ意味,アイコン画像の作成,編集ソフトが
世の中に存在するということを知らないのではないとかと思いました.

知っていれば「Delphi アイコン 作成」で検索すれば情報はあります.
もちろん,彼の方はヘルプはみない,検索もろくにしない,
自分ではすぐに理解できないと「他に急ぐ仕事がある」ということは
理解しているつもりです.

それでもやはり知らないのではないかと思いました.
そんなのは「常識である」というのは簡単です.
でも知らない人にとっては知らないことだし,常識ではありません.
「常識」「用語」というのは難しいです.


[11444] Re:世の中には画像作成用ソフトが存在する返信 削除
2017/10/15 (日) 09:42:22 Mr.XRAY
> [TSpeedBtnのGlyphプロパティに読み込みうるBitmapファイルを作成するには?]
> https://forums.embarcadero.com/thread.jspa?threadID=247221&tstart=15
>
> というのがあります.
> この方は,発言というか,内容というか,少しズレてはいるのですが,


このスレッドのレスに

>ビットマップファイルが作成できるソフトを探してみるのは、いかがですか?

というのがあります.ところが,これら対する反応が

>TImageならどんな ビットマップファイルも表示できるので、TPanelにTImageを載せたのを
>TSpeedBtnの代わりに使うことにしました。


となっています.完全にズレています.
Bitmap ファイルの作成方法を訊いているハズです.
TImage に何を表示するのでしょう ?
Bitmap ?
では,その Bitmap ファイルはどうやって作ったのでしょう ?
Bitmap ファイルの作り方を訊いていたハズなのでは ?

良い子の皆さんは真似すべきではありません.

>Bitmapファイルを作成するには?

これをそのまま受け取って解釈すれば
Bitmap をファイルに保存すれば Bitmap ファイルが作成できます.
つまり,TBitmap.SaveToFile を使用します.
ということになります.
何だか,私のところにくるメールみたいな内容です.


[11449] 何が問題なのか返信 削除
2017/10/15 (日) 12:13:45 Mr.XRAY
> となっています.完全にズレています.

当然ですが,こういうこともあります.
自分でも何が不明なのか,何が理解できていないのか分からない.
そこで質問します.

で,何かしらレスが付きます.
そのレスの内容によって,自分が何が問題なのか気づくことがあります.
何が知らなかったのか,どんなことを調べればいいのかと.

このようなことは,たとえコミュニティの場で質問しない場合にもあります.
検索エンジンで検索している最中に,
「あっ,そうか,そうじゃない.こういうことを調べるべきなんだ」
とかですね.


[11450] Re:何が問題なのか返信 削除
2017/10/15 (日) 12:29:48 Mr.XRAY
> 自分でも何が不明なのか,何が理解できていないのか分からない.
> そこで質問します.


個人的にはコミュニティの場で,そういう質問がもっとあっても
いいような気がします.
昔はあったような気がしますが...
皆さん難しい質問が多いです (^^;

メールでの質問では結構そんなのがあります.
ということは,そういうのもコミュニティの場でと思っています.
私に質問してもね.
誤字脱字,間違いが多いですから.
サイトの記事ならば気づいた時に修正できますが.
メールでは日にちが経過しているとちょっと...


[11445] Re:世の中には画像作成用ソフトが存在する返信 削除
2017/10/15 (日) 10:41:26 igy
▼ Mr.XRAYさん
> でも知らない人にとっては知らないことだし,常識ではありません.
> 「常識」「用語」というのは難しいです.


常識というのではないのですが、
Delphiを使う上で、結構、後になって気づいたのは、

・[タブ順序の設定]ダイアログ(メニュー[編集]-[タブ順序])
・IDEのコード補完で、出てくるリスト表示

などが、サイズ変更できることです。

ダイアログに関しては、右下にサイズ変更グリップ
http://www.atmarkit.co.jp/fdotnet/dotnettips/975formsizegrip1/formsizegrip1.html
が表示していれば、サイズ変更できることがわかるのに・・・と思った記憶があります。
# 実際、サイズ変更グリップを表示するコンポーネントを作りました。


で、今、検索してたら、見つけたのですが、
FMXでは、
サイズ変更グリップ(SizeGrip)
http://afsoft.jp/program/delxe3/p12_126.html
があるのですね。VCLはないみたいですが・・・


[11447] Re2:世の中には画像作成用ソフトが存在する返信 削除
2017/10/15 (日) 11:39:32 Mr.XRAY
▼ igyさん

> ・[タブ順序の設定]ダイアログ(メニュー[編集]-[タブ順序])

あっ,これ,だいぶ後に気づきました.
フォームあるいはコントロールのポップアップメニューで,
作成したアプリのフォーカス移動の制御に必要なんですよね.

> が表示していれば、サイズ変更できることがわかるのに・・・と思った記憶があります。

確かに.
これがないとサイズ変更可能かの判定ができないですね.
でも,あまり気にならなくなりました (^^;

> で、今、検索してたら、見つけたのですが、
> FMXでは、
> サイズ変更グリップ(SizeGrip)


こんなのがあるんですか.なるほど.

>このサイズ変更グリップコントロールは、一貫性を考慮して、フォームの右下隅に
>置くことをお勧めします。


確かに.
リサイズってだいたいは右下の隅を操作するようですので.


[11448] Re3:世の中には画像作成用ソフトが存在する返信 削除
2017/10/15 (日) 11:49:53 Mr.XRAY
> > ・[タブ順序の設定]ダイアログ(メニュー[編集]-[タブ順序])
>
> あっ,これ,だいぶ後に気づきました.


設定関係のダイアログって,結構リサイズ可能なのがありますね.
サイトの記事の画像作成の時にリサイズすることをゃっていましたが,
最近は矩形範囲で切り取ってしまうのが多いです.


[11451] サイズ変更グリップ返信 削除
2017/10/15 (日) 12:32:41 igy
># 実際、サイズ変更グリップを表示するコンポーネントを作りました。

作ったコンポーネントは、こんな感じです。
13年前に書いたコードでした。今だったら、もっと、スマートな書き方が出来たかもしれないですけど・・・

unit IgySizingMark;

interface

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

type
  TIgySizingMark = class(TGraphicControl)
  private
    { Private 宣言 }
  protected
    { Protected 宣言 }
    procedure Paint; override;
  public
    { Public 宣言 }
    constructor Create(Owner: TComponent); override;
  published
    { Published 宣言 }
    property Align;
    property Anchors;
    property Constraints;
    property DragCursor;
    property DragKind;
    property DragMode;
    property Enabled;
    property ParentShowHint;
    property ShowHint;
    property Visible;
    property OnContextPopup;
    property OnDragDrop;
    property OnDragOver;
    property OnEndDock;
    property OnEndDrag;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnStartDock;
    property OnStartDrag;
  end;

procedure Register;

implementation

const
        MARK_SIZE = 12; // SizingGripのサイズ
        X_ADD = 3;
        Y_ADD = 3;

procedure Register;
begin
        RegisterComponents('Igy', [TIgySizingMark]);
end;

constructor TIgySizingMark.Create(Owner: TComponent);
begin
        inherited Create(Owner);

        // 幅・高さを設定
        Height := MARK_SIZE + 1 + Y_ADD;
        Width  := MARK_SIZE + 1 + X_ADD;

        // 幅・高さを固定
        with Constraints do
        begin
                MaxHeight := MARK_SIZE + 1 + Y_ADD;
                MinHeight := MARK_SIZE + 1;
                MaxWidth  := MARK_SIZE + 1 + X_ADD;
                MinWidth  := MARK_SIZE + 1;
        end;
end;

procedure TIgySizingMark.Paint;
var
        cnt, amari, ln, sx, sy: integer;
        SizingGripShow: boolean;
        r: TRect;
        Details: TThemedElementDetails;
begin
        inherited;

        SizingGripShow := (TForm(Owner).WindowState = wsNormal) and
                                        (not TForm(Owner).HorzScrollBar.IsScrollBarVisible) and
                                        (not TForm(Owner).VertScrollBar.IsScrollBarVisible);

        if SizingGripShow then
        begin
                if not ThemeServices.ThemesEnabled then
                begin // XP 以前かマニフェストが指定されていない場合
                        sx := Width - (MARK_SIZE + 1);
                        sy := Height  - (MARK_SIZE + 1);
                        with Canvas do
                        begin
                                for ln := 0 to MARK_SIZE - 1 do
                                begin
                                        for cnt := 1 to MARK_SIZE - ln do
                                        begin
                                                amari := cnt mod 4;
                                                if amari = 1 then
                                                        Pixels[sx+cnt+ln, sy+MARK_SIZE-ln] := clBtnHighlight
                                                else if amari in [2, 3] then
                                                        Pixels[sx+cnt+ln, sy+MARK_SIZE-ln] := clBtnShadow;
                                        end;
                                end;
                        end;
                end
                else  // テーマに沿った描画を行う
                begin
                        r := ClientRect; // 描画領域の取得
                        Details := ThemeServices.GetElementDetails(tsGripper);        // パーツ&状態に対応するパーツ番号、状態番号を取得
                        ThemeServices.DrawElement(Canvas.Handle, Details, r);        // 描画
                end;
        end;
end;

end.


[11452] Re:サイズ変更グリップ返信 削除
2017/10/15 (日) 18:38:26 Mr.XRAY
▼ igyさん
> ># 実際、サイズ変更グリップを表示するコンポーネントを作りました。

おお,なるほど.
テストコードと実行結果です.
例によって Windows 7 U64(SP1) + Delphi XE(UP1) Pro です.

procedure TForm1.FormCreate(Sender: TObject);
begin
  FResizeGrip := TIgySizingMark.Create(Self);
  FResizeGrip.Parent := Panel1;
end;

procedure TForm1.Panel1Resize(Sender: TObject);
begin
 FResizeGrip.Left := Panel1.Width - FResizeGrip.Width ;
 FResizeGrip.Top := Panel1.Height- FResizeGrip.Height;
end;


[11454] Re2:サイズ変更グリップ返信 削除
2017/10/15 (日) 18:50:06 Mr.XRAY
そうか,これはグリップというわけではなく,マークなんですね.
それで Mark なんですね.なるほど.


[11455] Re3:サイズ変更グリップ返信 削除
2017/10/15 (日) 18:58:48 igy
▼ Mr.XRAYさん
> そうか,これはグリップというわけではなく,マークなんですね.
> それで Mark なんですね.なるほど.


あ、当時、なんて名前を付ければよいか、わからなかったので、マークにしてました・・・
今だったら、TxxxSizingGrip や TxxxSizeGrip とか、
テストコードに書かれているように TxxxResizeGrip のほうがよさそうですね。


[11456] Re4:サイズ変更グリップ返信 削除
2017/10/15 (日) 19:02:29 Mr.XRAY
▼ igyさん

> あ、当時、なんて名前を付ければよいか、わからなかったので、マークにしてました・・・
> 今だったら、TxxxSizingGrip や TxxxSizeGrip とか、テストコードに書かれているように TxxxResizeGrip のほうがよさそうですね。


いや,Mark とかのが適切のような.
FireMonkey は Grip ですが,実際にその部分にマウスカーソルがいくと
リサイズになるようです.つまり実際に「握る」ことになるようです.
Grip のための表示という意味では Grip でもいいのかな ?


[11457] Re5:サイズ変更グリップ返信 削除
2017/10/15 (日) 19:21:53 igy
▼ Mr.XRAYさん
> FireMonkey は Grip ですが,実際にその部分にマウスカーソルがいくと
> リサイズになるようです.つまり実際に「握る」ことになるようです.


たしかに!

SezeGripをフォーム(右下じゃないところ)に置き、
SezeGripのところにマウスカーソルを合わせると、カーソルの表示も変わり、
ドラッグするとフォーム自体がリサイズしますね!!



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