モナーの *やさしい* Delphi質問スレ Ver.8
■ このスレッドは過去ログ倉庫に格納されています
0001Delモナー
NGNG( ´∀`)<. Delモナーがどんな厨房疑問でもやさしく答えます。
( ) .| Delモナーは時に私であり、時には別の人。
| | | | 他のスレに書き込んで罵倒される前に、まずここで質問しよう。
(__)_) \_________________________
前スレ モナーの *やさしい* Delphi質問スレ Ver.7
http://pc.2ch.net/tech/kako/1021/10212/1021262086.html
0655デフォルトの名無しさん
NGNGフリーのコンポ入れてた。逝ってきます
0656デフォルトの名無しさん
NGNGファイルの中身がそのままはいっているのでしょうか?
カンタンDelphiプログラミングよんでるのですが
型を格納するとかかいてあるのですが
型を格納するのになぜファイルなの?っってかんじですた
0657デフォルトの名無しさん
NGNG0658
NGNG0659デフォルトの名無しさん
NGNG特定の型を格納する変数というのがよくわかりませんでした
<ファイル型変数
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNGファイルハンドルのことなのか
よくわかりますた
0662デフォルトの名無しさん
NGNGこの本
説明を省略しすぎたとおもうんだが・・
0663デフォルトの名無しさん
NGNGバージョンアップより高いんですけど(´д`;)
0664デフォルトの名無しさん
NGNG他のスレ/板で話題になっていたら教えてください。
0665615
NGNGできないんですか?
ttp://www.ogis-ri.co.jp/otc/hiroba/technical/Jouhoushori-UML/UML11.html#rabel2
こういった議論もあります。活性区間を重ねなければいけない場合って?
0669デフォルトの名無しさん
NGNGないよ。
あったらもっと操作性が統一されてるだろう
0670デフォルトの名無しさん
NGNGMicrosoft Press の「Windows ユーザーインターフェイスデザインガイド」は違うの?
まあ、マイクロソフト自体もこのガイドから外れることばかりしているから、誰も守らない
というのは当たっているけど。
ふるっ
Visual Studio&OfficeがUIのお手本です。
0672EXE系の人
NGNG使用許可コードというのが出てきて
英語がぎっしりのページで登録したんですけど
その後どこでライセンスを受け取るのですか
0673デフォルトの名無しさん
NGNGDelphi7トライアル?
だったら、メールがくるから、そのメールに書いてあるとおりに添付ファイルを配置すればOK。
0674669
NGNGははは、やっぱり古かったですか。
でも、「Visual Studio&Office」というのは「ちゃんと文章化」されているのでしょうか。
そして、その文章化されたものが適当な価格で販売されているのでしょうか。もし、
それがないのだったら「ガイドラインは無い」というのもあながち間違いではないかも。
0675デフォルトの名無しさん
NGNG検索すれば一発でわかると思いますが。調べもしないで無意味な投稿をしないでください。
0676EXE系の人
NGNGありがとう
0677デフォルトの名無しさん
NGNGその脳内理論を普遍なモノとして語る癖やめないと友達いなくなるよ?
0678デフォルトの名無しさん
NGNGそのセリフは吐駄チャンに言ってくださいな。
0680デフォルトの名無しさん
NGNG>検索までして調べる気もないや
よかったね。問題解決できて。
0681Delフサギコ ◆VzDeLphI
NGNG∧.,,∧ /
ミ.,,゚Д゚彡< マジ質問ですたんか?
ミ つ目(ミ . \
〜ミ,,O,,,,,,つ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
2chDelphi系のスレでは
某ML(のある人)の慣習に従って、どんな質問がきても
「過去ログを検索しろ」レスをつけておちょくるのが
流行っているんで(w
あまりマジで受け取らないように。
で、
>でも、「Visual Studio&Office」というのは「ちゃんと文章化」されているのでしょうか。
されてないと思われ。
>それがないのだったら「ガイドラインは無い」というのもあながち間違いではないかも。
「ガイドラインは無い」というのが多聞正解
だから、ころころ変わるVSやOfficeやXPに追随せねばならんです
"Designed for Windows XP/2000/ME/98/NT"
っていうロゴを取得したりは出来るらしですが、
別にあってもなくても誰も気にしないと思われ
0682デフォルトの名無しさん
NGNGとんでもないデザインなのは何とかしてほしい。
ボタンだらけとか色が派手派手だとかヒントがまったくでないとか。。
0683ガンガレー
NGNG0684デフォルトの名無しさん
NGNGそういう人のためにWindowsにはエクスプローラというすばらしいファイラーがついているのだよ。
0685デフォルトの名無しさん
NGNGファイラの話はしてねーよ
0686デフォルトの名無しさん
NGNG使わなきゃいいだろ。
Delphi となんの関係があるの。 Delphi 製とか?
0687デフォルトの名無しさん
NGNGうるさいなぁ。ML の下らん規則を持ってくるな。ぼけ。
0688デフォルトの名無しさん
NGNG使ってないよ。
"Designed for Windows XP/2000/ME/98/NT"の話が出てきたから、
UIにも気を使ったソフトを作らないとね、っていう話をしたかった。
0689669
NGNG何も問題ではありませんが?「調べりゃわかる」と言われたんで、調べる気もないと返した
だけです。
「Visual Studio&Office」というソフト名らしき物を上げて「お手本です」と書かれたので、文章
化(書籍化やWeb上にまとめられているか)を知りたかっただけです。
>>681
ありがとうございます、やはり「MSのソフトに合わせろ」という感じなのでしょうか。それはど
う考えても「デザインガイド」ではないですね。ただのお手本という感じにしかなりませんね。
それならば私が出した本は「一応デザインガイド」となっているので、これに従うのが一番妥
当なような気がします。ちょっと古くさいUIですが、別に動かないというものでもないし。
0690デフォルトの名無しさん
NGNG>それならば私が出した本は
(((((((( ;゚Д゚))))))))))))ガクガクブルブル
0691デフォルトの名無しさん
NGNG後3分くらい考えると本当の意味がわかるよ。
逆にそれくらい考えないと意味がわからない文章だよ。
0692Delフサギコ ◆VzDeLphI
NGNGスレの流れも意味わからないけどな。
0693デフォルトの名無しさん
NGNGそれを許せるのなら、どんな UI を使ってもいいんじゃないの?
それとも、自分で考えるのがいやとかかな?
ガイドラインがないと何もできないとか?
0694デフォルトの名無しさん
NGNGこれか
0695デフォルトの名無しさん
NGNG>PC 98は、ハードウェア設計者を対象に作成され、その目的は、以下の通りです。
って書いてあるやん。
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNG0698669
NGNG分かりにくくなってすみませんでした。「私の挙げた本は」とすべきでした。
>>693
確かにどんなUIでも良いのですが、一応「標準(デザインガイド)」があるなら
それに従った方が使いやすくなると思っています。自分しか使わないソフト
なら全く考えずに作るのですが、一応フリーソフトとして公開するやつはデザ
インガイドから外れていないかチェックするようにしています。
「ちょっとしたツール」程度のものですから、複雑なUIを使わなくても何とか
なります。
マイクロソフトのソフトはほとんど使っていないので、「ソフトを見ながらUIを
チェックする」ということが出来ないんです。
0699デフォルトの名無しさん
NGNGmacなら編集できまりなのだが
winだと編集だったりツールだったり
0701デフォルトの名無しさん
NGNG>マイクロソフトのソフトはほとんど使っていないので
メモ帳、ワードパッド、マインスイーパー、エクスプローラーあたりを使ってみてはどうか。
0702デフォルトの名無しさん
NGNGTShapeの図形をクリックすると、新しく図形がそこに作成され、
マウスで動かせるようにしたいのですが、
マウスをムーブした時のイベントが、元の図形のままになっているようで、
うまくいきません。
新しく作成したTShapeのイベントにするような方法ってありますでしょうか?
0703デフォルトの名無しさん
NGNGもしそうなら、新しい TShape のイベントをそれに関連づけたら
0704デフォルトの名無しさん
NGNGそれが新しいオブジェクトを生成したとしても、何もしなければ古いオブジェクトの
イベントのまま。だってイベントの元の Windwos メッセージは古いオブジェクトの
WIndow ハンドルに送られてきたんだから。
アクロバット的な解決方法もあるかもしれないが、定石としてはコンポーネントを
乗せているオブジェクト(TForm など)に細工をするのがおすすめ。
0705デフォルトの名無しさん
NGNG作成したイベントが重なっていないなら動かせるけど、重なっていると
どっちにしてもどれか一つしか受け取れない
こんなの参考にして複数のイメージを含んだコンポ作ったら?
矢印や直線も描ける、しかも設計時にCADみたいにイメージを動かせるコンポ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1004530597&rm=100
0706702 ヽ(´∀` )ノ
NGNGたいへんありがとうございます!!!
試行錯誤して色々やってみます!!!
0707デフォルトの名無しさん
NGNGttp://home1.infonia.ne.jp/~delphian/delphi/compo/text/mi0027.txt
結構古い(D3時代)から、手直しが必要かも。
0708お約束。
NGNGFDelphi の FAQ を探してみましょう。
0709702
NGNGどうもありがとうございます!!
また質問なのですが、ShapeのParentを変更すると、
マウスを早く動かしたときに図形がマウスについてこなくなってしまうのです。
再びマウスを乗せるとついてきます。
FAQっぽい感じもするのですが、見当たらないです・・・。
0710デフォルトの名無しさん
NGNGSetCaptureControl やってみそ
0712708
NGNG0713デフォルトの名無しさん
NGNG> WIndow ハンドルに送られてきたんだから。
TShape はウィンドウをつくらないはず。ハンドルなんかないよ。
D&Dで動かせるようなイベントハンドラが Sender だけを参照して
特定のインスタンスを参照しないようにコーディングされていれば
新しいインスタンスのイベントに関連づけするだけでは?
0714702
NGNGTShapeを配列でたくさん作って、それぞれに共通の関数で処理しているのですが、
根本的にやり方がタブーなんでしょうか?
★最初にTShapeを配列でとって
Var
MyShape : array[1..10] of TShape;
★Form1のクリエイト時に
procedure Form1.FormCreate(Sender: TObject);
begin
for i := 1 to 10 do
begin
MyShape[i] := MyShape.Create(Form1);
MyShape[i].Parent := Form1;
MyShape[i].OnMouseDown := MyShapeMousedown;
MyShape[i].OnMouseMove := MyShapeMouseMove;
MyShape[i].OnMouseUp := MyShapeMouseUp;
end;
end;
★クリックされた時の関数は
procedure Form1.MyShapeMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
SetCaptureControl(TControl(Sender)); ←☆
for i:=1 to 10 do
if Shape[i] = Sender then ここで配列の中のどのコンポーネントか判断している。
begin
マウスを早く動かすと、移動中のShapeがおいてけぼりになってしまいます。
SetCaptureControlをマウスクリック時に設定しても、マウスを動かしたときにMyShapeMouseMove()に処理が来ないです。
0715デフォルトの名無しさん
NGNGonKeyDownイベントで[CTRL]+[SHIFT]+[0}が入力された時のみ
特定の処理をしようと思っているんですが・・・。
[SHIFT]→[CTRL]→[0]と押す Key値:16
[CTRL]→[SHIFT]→[0]と押す Key値:17
となってしまいます。
因みに何も押さない時のKeyは96。
きちんと[SHIFT][CTRL][0]を検知するにはどうしたら・・・?
0716Delフサギコ ◆VzDeLphI
NGNG,,,,,,,,,,,,,,,∧,,∧ /Ctrll+Shift+0
〜′,,,,,,,,,,ミ,,゚Д゚彡< Actionのショートカットキーに
UU"""" U ⊃ \割り当てるのがよし
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0717デフォルトの名無しさん
NGNGふつう Sender を TMyShape にキャストするだけでは?
0718デフォルトの名無しさん
NGNGコンポを配列にするというVBみたいな発想はやめたほうがいいよ
0719Delフサギコ ◆VzDeLphI
NGNG,,,,,,,,,,,,,,,∧,,∧ />>718
〜′,,,,,,,,,,ミ,,゚Д゚彡< 時と場合によると思うよ
UU"""" U ⊃ \
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0720デフォルトの名無しさん
NGNG同意。
ボタンを押すと100個のチェックボックスが一斉に(略
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG彼のようになんとしてもキャストを使いたくないときには有効だと思われ。
0723デフォルトの名無しさん
NGNG>>714 のコードは配列をループで回すところが無駄なんだよ。
0724714
NGNG配列をループで回さない場合、どうやるのでしょうか?
Controlsでしょうか?勉強します。
Shape.parent := で親を変更すると、マウスの動きが速いとき図形がついてこなくて、
Windows.SetParent(Shape.Handle,Form1.Handle); だと、きちんとついてくることが判りました。
しかし、この場合、Shape.top:= Shape.Left := で、図形の位置をセットできません。
Shape.parent := の場合は、図形の位置をセットできます。うーん。
0725Delフサギコ ◆VzDeLphI
NGNG,,,,,,,,,,,,,,,∧,,∧ /
〜′,,,,,,,,,,ミ,,゚Д゚彡< ClientToScreenとかその逆で
UU"""" U ⊃ \ Top/Leftを計算してみては?
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0726デフォルトの名無しさん
NGNG0727714
NGNGShape.parent:=で親を変更した場合は、ClintToScreenなどでtop,Leftを
計算してうまくいくのですが、
Windows.SetParent( で親を変更した場合には、Top,Leftに何を入れても
反映されないのです・・・
0729デフォルトの名無しさん
NGNGあるんですか?
0730デフォルトの名無しさん
NGNG>計算してうまくいくのですが、
>Windows.SetParent( で親を変更した場合には、Top,Leftに何を入れても
TShape ってウィンドウを作らない VCL コントロールなんだから
Windows.SetParent() で親を設定できるはずないだろ
0732デフォルトの名無しさん
NGNG他のみんなはコントロールをすべてなめる時の話をしてるんだけどね。
0733デフォルトの名無しさん
NGNGはあ? スレの流れ読めてないね。
発端の >>714 のコードが何やりたいかわからないのか。
ループで回す必要ないんだよ。Sender に目的のオブジェクトが入ってるんだから。
0734733
NGNG0735ななしへたぐらま ◆B18Bks.Y
NGNGShepeコンポのドラッグによる移動はこんな感じでしょうか.
>>710さんが意図したのとは違うかも知れませんが
SetCaptureControlでShapeの親がマウスイベントを捕捉するようにしています.
//TForm1のフィールド変数に以下を追加
FDraggingControl: TControl; // ドラッグしているコントロール
FDragOffset: TPoint; // ドラッグしているコントロールの左上座標からドラッグした位置までのオフセット
// 各ShapeコンポのOnMouseDownイベントハンドラ
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// ドラッグしているコントロールを保管
FDraggingControl := Sender as TControl;
// ドラッグしているコントロールの左上からマウスカーソルまでのオフセットを保管
FDragOffset.x := X;
FDragOffset.y := Y;
// マウス処理をこのコントロールの親で捕捉するようにする
// (つまり,以後にマウスを動かしたりボタンを離しても
// ShapeコンポのOnMouseMove,OnMouseUpイベントは発生せず,
// 代わりに親の同イベントが発生する)
SetCaptureControl(FDraggingControl.Parent);
end;
(つづく)
0736ななしへたぐらま ◆B18Bks.Y
NGNG// Shapeの親のOnMouseMoveイベントハンドラ
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
// ドラッグしているコントロールがあるならそれを移動する.
if (FDraggingControl <> nil) then
begin
FDraggingControl.Left := X - FDragOffset.x;
FDraggingControl.Top := Y - FDragOffset.y;
end;
end;
// Shapeの親のOnMouseUpイベントハンドラ
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// マウス処理の捕捉を終了
// (以後,通常通りにマウスイベントが発生する)
ReleaseCapture;
// ドラッグしているコントロールがなくなったことを記憶.
FDraggingControl := nil;
end;
0737709
NGNG初心者&独学で、なんとも変なコードを当たり前の様に
書きつらねてしまっているので、大変勉強になります!!!
0738デフォルトの名無しさん
NGNGShelllistviewで選択したファイル名って、なんていうプロパティで受け取る
ですか????
HELPにもありません
(^o^)丿
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNGItemIndex とか Selected とかかな? 使ったことないけど。
>>739
理由教えて。
0741727
NGNGすみません。その通りでした。
ShapeじゃなくてPanelでした。呆けてました。
ネットで検索したら、parentはcreateした直後に設定し、その後にその他の
プロパティを設定しなくてはならないみたいです。
・・・とすると、一度parentを設定したら、変更してはいけないのかな?という感じがします。
0742デフォルトの名無しさん
NGNG親を変更してはいけない、ということはありませんが
変更しなくてもよいプログラムが書けるならそのほうが
よいと思います
0743デフォルトの名無しさん
NGNGPathだったような違ったような。
0744デフォルトの名無しさん
NGNGFAQです。過去ログを参照しましょう。
ってMLじゃたたかれますな。
>>739
多分Delphi6もってないんじゃないの?
注意書きと、些細なバグさえ修正すればそこらの汎用プログラマが作成するより幾分堅牢なコンポーネントのような気はするけど。
些細なバグは過去ログあたってね
0745デフォルトの名無しさん
NGNG当たり!
0746デフォルトの名無しさん
NGNG0747デフォルトの名無しさん
NGNG使ってる。つっても、インストールしてサンプルで適当に遊んで
DDSDでoggファイル再生する実験してみたくらいだけど。
0748738
NGNG教えてくだちい へこへこ
0749デフォルトの名無しさん
NGNG使ってますよ。
0750709
NGNG>>735さんに教えていただいて、次の書き込みのソースを書きました。
Form1の左側にScrollBox2,右側にScrollBox1があります。
左側のScrollBox1をparentとするPanel1をマウスでドラッグ&ドロップで、
右側のScrollBox2に移動させたいと考えています。
Panel1をマウスクリックした時にparentをForm1に変更し、
マウスボタンを離したときにparentをScrollBox2に変更しています。
ところが、マウスのボタンを離してもScrollBox2にpanelが移動しないのです。
念のため、
タイマーを使って、Panel1のparentを左右のScrollBoxを交互に変更させたらうまくいきました。
0751709
NGNG____FDragOffset:Tpoint; //オフセット
____FDraggingControl : TControl;//ドラッグしているコントロール
implementation
//マウスを移動
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
____FDraggingControl.Left := X-FDragOffset.X;
____FDraggingControl.top := Y-FDragOffset.Y;
end;
//マウスボタンを離したら
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
____ReleaseCapture;
____FDraggingControl.Parent := Scrollbox1; //マウス離したら親をscrollbox1に変更
____FDraggingControl:=nil;
end;
//マウスボタンを押したら
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
____FDraggingControl := Sender as TControl;
____FDragOffset :=point(x,y);
____SetCaptureControl(Form1);
____FDraggingControl.Parent := Form1; //マウス押したら親をForm1に変更
end;
end.
0752746
NGNGDirectX7SDKヘルプの「ボーランド浮動小数点の初期化」というのを見ると、
もっとスマートな方法があるような気もするのですが。
Quadruple Dのヘルプを見ても、入れなければならない条件というのがあいまいで
よくわからないのですが。。。
0753デフォルトの名無しさん
NGNGKeyUpだし
ScrollBox2出てこないし
0754デフォルトの名無しさん
NGNGDel6でインスコしていじってたことあるよ
■ このスレッドは過去ログ倉庫に格納されています