トップページ⇒tech
1001コメント313KB

モナーの *やさしい* Delphi質問スレ

■ このスレッドは過去ログ倉庫に格納されています
0001DELモナNGNG
DELモナーがどんな厨房疑問でもやさしく答えます。
DELモナは時に私であり、時には別の人。
他のスレに書き込んで罵倒される前に、まずここで質問しよう。
 ∧ ∧
( ´∀`)(    )
0237デフォルトの名無しさんNGNG
>>235
Windows終了時にかちゅーしゃ終了させるアプリ作ってる?
需要あるから公開キボンヌ。
0238デフォルトの名無しさんNGNG
kill@cygwin
0239デフォルトの名無しさんNGNG
んーぐらい自分で作れドアホウ
0240235NGNG
>>236
    |うぇーん、どうしたらいいかわからないモナー
     ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ∧_∧
     ( ´Д⊂ヽ
    ⊂    ノ
     人  Y
    し (_)
Googleで調べたら、
 PostMessage(Self.Handle, WM_CLOSE, 0, 0);
ってすると、自分自身を終了できるけど、
Self.Handleのとこの変え方(?)がわかんない・・・。
こういうのの使い方ってどうやって調べるの?

>>237
2ch依存しすぎてるんで、
一定時間したら強制終了させられたらいいかな、と。

>>238
cygwin(?)だと、一定時間後とかってできないですよね?

>>239
できたら代わりに作ってください。お願いします。
0241デフォルトの名無しさんNGNG
>>240
EnumProcessとかFindWindowとか
0242235NGNG
できましたー。
FindWindowを使って、
 FindWindow(nil,'かちゅ〜しゃ');
ってしたらできました。
(こんな方法で良いのか、わからないけど・・・)

あとはタイマーつけて頑張ります。
この度はありがとうございました。
0243デフォルトの名無しさんNGNG
「かちゅ〜しゃ」フォルダも引っかかるかも
0244デフォルトの名無しさんNGNG
      ,−-、
     / ̄ l |   / ̄ ̄ ̄ ̄ ̄
    ■■-っ < んなこたーない
    ´∀`/    \_____
   __/|Y/\.
 Ё|__ | /  |
     | У..  |
0245デフォルトの名無しさんNGNG
>>242
むしろ、
FindWindow('TKatjushaMainForm', nil);
のほうがいいかも…
0246235NGNG
皆様のおかげで無事完成いたしました。
かちゅ〜しゃ起動・終了の代わりに、
このソフトで起動・終了をさせなくちゃいけなかったり、
色々と使いづらいところもありますが、満足なできになりました。
ありがとうございました。
0247235NGNG
ちゃんとできたような気もするのでageてみました
http://members.tripod.co.jp/RtFchs/KatjuClose_1113.lzh
0248DelフサギコNGNG
   ∧,,∧   / ̄
\,,,,ミ,,゚Д゚彡 < sageでゴメンなさい。
⊂,,,,,,,,,つつ.   \_

かちゅのパスが取得できていないみたいですので
http://homepage1.nifty.com/beny/tips/other10.html
これみて、かちゅ起動時には
フルパスを自動取得できたらいいなあ。
0249デフォルトの名無しさんNGNG
>>248
NTだとそれじゃフルパスが取得できないんだよねw
0250DelフサギコNGNG
    ∧ ∧  ソデシタカ
    ミ ゚Д゚彡  ジョウホウ サンクスコ
  〜ミ,,,,uuミ
0251249NGNG
>>250
EnumProcesses
EnumProcessModules
GetModuleFileNameExA

を組み合わせて作る。
たしかこれ併用して9x/NTどちらでも
プロセスをフルパスで列挙可能な非VCLがあったんだが…

コンポのソースに書いてあったURLに飛ぼうとしたら404、
MSDNの検索でも結果に飛ぼうとしたら、んなページねぇぞゴルァ言われた…
具体的なURLは出せないスマソ。
0252デフォルトの名無しさんNGNG
>>251
BorlandのQ&Aで見た記憶がある。
C++用だったかも。
0253235NGNG
あぁ、サパーリわからん( ; ´д`)
(>>248で上げられてるのを、どう使ったらいいのかわからないレベル・・・)
レベル的に無理そうだし、OpenDialogでの取得で落ち着きます。
http://members.tripod.co.jp/RtFchs/KatjuClose_1119.lzh
0254デフォルトの名無しさんNGNG
http://pc.2ch.net/test/read.cgi/tech/995950803/l50
0255デフォルトの名無しさんNGNG
初心者質問なのですが、よろしくお願いします。
フォームを表示させる場合に、自動的に画面の中央に
表示させたいのですが、コーディングしないとダメなのでしょうか?
0256デフォルトの名無しさんNGNG
>>255
Form の Position プロパティのヘルプを読め!
0257255NGNG
>>256
Positionプロパティだったんですね、了解です。
0258デフォルトの名無しさんNGNG
ListViewコントロールをレポート形式で表示させているのですが、
データを追加するにはどうすればよいのでしょうか?
ヘルプにはAddItemにリンクが張られてなかったのですが・・・
0259デフォルトの名無しさんNGNG
>>258
VCL ソースを読んだら?
0260デフォルトの名無しさんNGNG
>>258
質問者がどこで引っかかっているのかがわからないが...

ListView1.AddItem(Item: String; AObject: TObject);
または
 with ListView1.Items.Add do
 begin
  Caption := 'XX';
 end;
こんな書き方は? Items.AddItem は第一引数の扱いが難しいから
あまり勧めない。
0261_NGNG
素直にこうすれば?

Item: TListItem;

Item := ListView1.Items.Add;
Item.プロパティ := 値;
0262デフォルトの名無しさんNGNG
>>261
おなじじゃん...
0263デフォルトの名無しさんNGNG
最近Delphi6Parsonalをダウンロードしました。
そこで、環境変数のPathを変更する機能を作ろうと思ったんですが、
読込方法しかわからず、書き込み方法がわかりません。
DelphiMLとか、WebでWin32APIとか検索したんですが、どうにも見つかりません。
知っている方、教えていただけませんか?
0264DelフサギコNGNG
>そこで、環境変数のPathを変更する機能を作ろうと思ったんですが、

   ∧,,∧   /
(,,,,,,,ミ,,゚Д゚彡 < 実は、かなり調べたけどフサにはわからなかったんだな。
⊂,,,,,,,,,つつ.   \
 もしかしてBATファイルで設定できないでしょうか?

 そしたら、テキストファイルとしてBATを作成して実行して削除すれば
 いいのかも....
0265DelフサギコNGNG
拾得
#define ENV_MAX 256 //特に根拠のない数字
char EnvOfTmp[ ENV_MAX ];
GetEnvironmentValiable( "TMP" , EnvOfTmp, ENV_MAX );

設定
SetEnvironmentValiable( "TMP", "C:\Windows\Temp" );

   ∧,∧     ,::  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ミ,,゚Д゚彡っ━'~  | 改めて調べたらいきなりわかった。
  ミ∪  ~,ノ    < BCBコードは訳しておくれ。
   ミ  '' ミ       \____________
   し'~し'

今は亡き、BCBサイト[ARAHIQS]のTipsですす。

試してないので、動作確認よろしう。
0266258NGNG
>>260
サンプルソースで理解できました。
ありがとうございます。
0267デフォルトの名無しさんNGNG
>>265
ありがとうございます!
早速試してみたんですが、未定義の識別子:'SetEnvironmentValiable'
と言われてしまいました。
現在GetEnvironmentValiableの方は動いております。
何か、Usesに加えたりすれば解決するのでしょうか?
0268名無しヘタぐらま ◆B18Bks.Y NGNG
>>258
文字列リストのObjectsプロパティのような
関連するデータへの参照ということでしたら
>>261さんの方法でもできますです.
レポート形式ということなので蛇足ながら
2つ目以降の列の設定のコードの例もあげるです.

procedure TForm1.Button1Click(Sender: TObject);
var
NewItem: TListItem;
begin
NewItem := ListView1.Items.Add;
NewItem.Caption := 'なんとか';
NewItem.Data := FMyNantokaObject; // データへの参照.
NewItem.SubItems.Add('さぶ1');
NewItem.SubItems.Add('さぶ2');
NewItem.SubItems.Add('さぶ3');
end;
0269DelフサギコNGNG
  ∧⊂ヽ, /
  ミ゚Д゚,ミ,ノ< ハニャーン
  ミ⊃ ,ミ  \
  ミ,  ,,ミ    >>267、あら、見つからないですね。ガセかしら。
  ⊂,,,ノ
    ∪
Windows.pasにはこんな風にかかれてるけど。
function SetEnvironmentVariable(lpName, lpValue: PChar): BOOL; stdcall;
0270デフォルトの名無しさんNGNG
>>265
ValiableじゃなくてVariable。lとr間違ってる
0271デフォルトの名無しさんNGNG
>>270
間違っていました(汗
修正したら動くようになりました!
フサギコさん、270さんありがとうございました。
0272デフォルトの名無しさんNGNG
初めて書き込みます。

現在テキストエディタを製作中なのですが、
作業中にTabを押してもメモ帳のようにカーソルが移動しません。
これはやはりOnKeyPressでそれ相応の処理をさせないと
いけないのでしょうか?(空白を入れる、など)
一通りTipsを探し回ってみたのですが、それに近い答えが見つからなかったもので…。

お願い致します。
0273DelフサギコNGNG

  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < WantTabs
  UU""" U U   \_______________
0274デフォルトの名無しさんNGNG
フサギコさん有難うございます。解決致しました。
まさかプロパティだったとは…。

もう少し勉強してからお邪魔致します。
厨な質問申し訳ございませんでした。
0275DelフサギコNGNG

  ,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,ミ,,゚Д゚彡 < そんな恐縮せんでも、
  UU""" U U   \_______________
ガツガツ質問して、盛り上げてくれたらいいのでは?

MLとか、広場とかでやられるより
ここで質問したほうがよくない?
0276デフォルトの名無しさんNGNG
>>275
それは>1だからいえることで、イパーソジソには禁句と思われw
0277HSP厨房NGNG
Delphiを解説している、本はない?
0278デフォルトの名無しさんNGNG
Delphi6パーソナルでフォームを透明にするコンポーネントってありませんか?
0279デフォルトの名無しさんNGNG
>>278
おもいっきし TransparentColor とか AlphaBlend とかいうプロパティがあると思うけど
0280デフォルトの名無しさんNGNG
272です。タブキーの件ではお世話になりました。

引き続きテキストエディタに関しての質問です。
読み取り専用ファイルを開いて[上書き保存]の処理をさせた時に、
「読み取り専用なので保存出来ません」と言った内容の警告を出したいと思っております。
とりあえず自分が考えたのは、

1)読み込んだファイルの属性を変数Ftype(仮)に格納
2)ダイアログを使用しない[上書き保存]の処理の際にFtypeの値を参照し、
 それぞれの処理に分岐させる

と言う感じの処理です。
OpenDialog等でファイルを開いた時に対象ファイルの属性を取得したいのですが、
取得する場合はどうすればいいのでしょうか?

>>276さん、フサギコさん
ありがとうございます。まだDelphiを始めて間もないですが、
自分なりに努力してやって行こうと思っております。
ご迷惑をお掛けするかも知れませんが宜しくお願いします。
0281デフォルトの名無しさんNGNG
>>280
ExtractFilePathでファイルがあるフォルダを取得して
FindFirst、FindNextをループさせて頑張る。
0282デフォルトの名無しさんNGNG
>>280
他にもあるかもしれないけど FileGetAttr

人に聞くのも一つの解決法かもしれないけど、ヘルプを引く癖をつけた方がいいよ。
このFileGetAttrという関数を覚えていたのではなく、ヘルプを開いて、「VCLリファレンス」
「ルーチン一覧(カテゴリ別)」、「ファイル管理ルーチン」と辿って見つけた。約1分。
>>280を書いて、俺がたまたま読んで、このレスを書くまで約30分。この差は大きい。

Delphiのヘルプって使いづらいとか言われてるから、慣れるまで時間がかかるかも
しれないけどね。俺は他の言語をほとんど使ったことがないのでよくわからないけど。
0283デフォルトの名無しさんNGNG
>>281
FindNext って、あんたワイルドカードを含んでいるわけじゃないんだから、
ファイル名が確定している状態で FindFirst に渡せばそのファイルの属性が取れる。
0284デフォルトの名無しさんNGNG
>>280
あと、ReadOnly のファイルに上書きしたい。という欲求が出てきてもおかしくないから
「開いたときの属性」ではなく「保存時の属性」で判断したほうが自然。
0285デフォルトの名無しさんNGNG
実際に書き込もうとしてみてエラーが出てから
原因を表示しても良し。
0286デフォルトの名無しさんNGNG
>>281-285の皆様、ご教授ありがとうございます。
282さんの解説して下さったFileGetAttrで処理する事に致しました。
対応としてはメモ帳と同じように、読み取り専用のファイルの場合は
[名前を付けて保存]の処理に移動させるようにしたいと思います。

>>282さん
ご注意頂き申し訳ございませんでした。
これからはヘルプ、Tips等を参照してから質問するかどうかを判断したいと思います。
今回のように基本的なことはすべてヘルプで解決出来そうなので…。

お邪魔致しました。
0287282NGNG
>>286
「質問うぜー」とかって意味じゃないよ。
調べる手段を複数持っていた方が解決が早くなるときもあるから
そういうことを勉強するのも大切って話。
0288デフォルトの名無しさんNGNG
インテリマウスで何個スクロールするか、一画面スクロールするか、
みたいな設定を自作のコンポのスクロールに反映させたいのですが。
現在は、WM_WHEELlを受信したときWM_VSCROLLに置き換えて1単位ずつ雨後貸しています。
0289デフォルトの名無しさんNGNG
>>288
そうですか。
0290デフォルトの名無しさんNGNG
雨後貸しって何?
0291デフォルトの名無しさんNGNG
>>279
遅くなってスミマセン。ありがとうございます。
しかしそれはwin98じゃできないみたいです。
0292デフォルトの名無しさんNGNG
雨後貸=動かし
こんな2ch用語あったか?
0293デフォルトの名無しさんNGNG
これの再現かと思ったのに・・・。
http://yasai.2ch.net/test/read.cgi?bbs=win&key=994872359&st=316&to=323
0294デフォルトの名無しさんNGNG
Delphiって、どういう意味ですか?
0295デフォルトの名無しさんNGNG
>>291
あきらめろ。
0296デフォルトの名無しさんNGNG
>>294
イルカ。
0297デフォルトの名無しさんNGNG
>>295
わかりました。どうも、ありがとうございました。
0298デフォルトの名無しさんNGNG
どるふぃん。
0299デフォルトの名無しさんNGNG
M$Wordのマスコットってイルカじゃなかったですか?
0300デフォルトの名無しさんNGNG
300get
0301デフォルトの名無しさんNGNG
Delphiは古代ギリシャの町の名前。
ボーランドはギリシャが好きらしく、
Midas (手に触れるものすべてを黄金に変える力を
与えられた王)などのソフトがある。
0302-NGNG
そして Delphi で Oracle(神託) を受ける
0303なんでNGNG
comp.lang.delphiってないの?
0304デフォルトの名無しさんNGNG
comp.lang.pascal.delphi.* は?
http://groups.google.com/groups?hl=ja&group=comp.lang.pascal.delphi
0305デフォルトの名無しさんNGNG
アイコン選択ダイアログボックスってどうやって実装するの?
アプリによってUIがまちまちなんで全部自前で作らないと駄目なのかな
0306デフォルトの名無しさんNGNG
>>305
SHChangeIconDialog を使う。
0307デフォルトの名無しさんNGNG
Delphi6Parsonalをインストールした。
でDEMOSにあるサンプルを見たが、どれが何だかわからん、ヘルプに説明無いし。
どっか説明してるとこあったら教えてくださいませ。
0308sageNGNG
ツールボタン用のbmp画像がたくさんあるサイト知りませんか?
絵心がないもので...。
0309デフォルトの名無しさんNGNG
>308
別のDelスレにレスがあるよ
0310デフォルトの名無しさんNGNG
XPのカコイイボタンやタブコンはどうすれば使えるんですか?
0311デフォルトの名無しさんNGNG
>>310
まにふぇすとを用意する。
0312デフォルトの名無しさんNGNG
別のソフトの最大化を無効にしたいのですが、無理でしょうか?
SetWindowLongで無効にするだけだと、Userの操作での最大化は防げても
プログラム自体がShowWindow辺りで最大化するのは防げませんでした。
何かヒントなどありましたら教えてください。お願いします。
0313無断転載NGNG
CBTProcフック プロシージャは、 次のような場合にシステムが呼び出す、 アプリケーション定義またはライブラリ定義のコールバック関数です。

・ ウィンドウがアクティブにされたり、 作成されたり、 破棄されたり、 アイコン化されたり、 最大化されたり、 移動されたり、 サイズ変更されたりする前

・ システム コマンドが完了する前
・ システム メッセージ キューからマウス イベントやキーボード イベントが削除される前
・ キーボード フォーカスが設定される前
・ システム メッセージ キューを同期させる前

フック プロシージャが返す値により、 Windowsがこれらの操作のいずれかを許可するかまたは許可しないかが決まります。コンピュータ ベースのトレーニング (CBT) アプリケーションは、 システムから有用な通知を取得するために、 このフック プロシージャを使います。
0314デフォルトの名無しさんNGNG
>>312
強引な方法だが、KERNEL32.DLL以外で、
対象アプリが起動時に読み込むDLLのラッパを作成。
そのラッパDLL内部で最大化したくないウィンドウをサブクラス化する。
そして最大化のメッセージを拾ったらそれを捨てる。

イメージとしてはWinMXに対するchime、かちゅ〜しゃに対する
Katjusha Extenderな感じだね。

これでどうだろう?外部からあれこれいじるのはあまりスマートに
実装できないし…(少なくとも漏れはスマートに実装する方法は知らない)
こうやって内部に侵入した方が(・∀・)イイ!と思われ。
0315デフォルトの名無しさんNGNG
>>313
システムフックって開発/デバック時、
Windowsや他のアプリにDLL掴まれて再構築とか
出来なかったりして面倒だし、最悪システム全体に
悪影響及ぼすから、あまりスマートとは思えないスマソ。
0316デフォルトの名無しさんNGNG
312くらいのことだったら始めはdllなしで組んで、グローバルじゃなくて
スレッドに掛けるようにすればという所感。
0317312NGNG
色々とありがとうございます。
サブクラス化かフックということになるのですね。
詳しく調べて実験してみようと思います。
0318デフォルトの名無しさんNGNG
Magic of Delphi どこ逝ったの
0319デフォルトの名無しさんNGNG
>>318
閉鎖
0320デフォルトの名無しさんNGNG
すいません。
Delphi4が1000円で売っていたのですが
今、持っているDelphi6Personalをそのまま使用したほうがいいでしょうか?
それとも買いですか?
0321デフォルトの名無しさんNGNG
Delphi4 の何なのかわからないと答えようがない
Pro以上なら買いだ
0322デフォルトの名無しさんNGNG
>>320
Client/ServerかProfessionalなら買い。Standardなら不要。

VCLソースが入っているかどうか判断の基準。
実際に使うのはDel6PersonalでDel4のVCLソースを参考にするという
使い方がいいと思う。
0323デフォルトの名無しさんNGNG
しかしユーザー登録してバージョンアップできるから
\1000ならやっぱり買いだ
0324デフォルトの名無しさんNGNG
>>320
正規ライセンスがついていれば買い。
もちバージョンアップが前提。
0325デフォルトの名無しさんNGNG
>309
どのスレかだけでも教えて
0326デフォルトの名無しさんNGNG
>>325
フサギコ
0327デフォルトの名無しさんNGNG
>326
見つけました。ありがとうございます。
0328DelフサギコNGNG
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < 他にアイコン画像のいいサイトがあったら報告してね。
  UU"""" U U    \_______________
Delphiお役立ちサイト(コピペ)
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=999486538
0329( = ゚ ω゚ )NGNG
助けてください
2つ目のフォームを追加し、その名前を aa.pasなどとして保存し、
1つ目のフォームの uses に aa.pasを追加して
実行(コンパイル)すると、
usesの中にある Forms に対して
Forms.pasはどこにあるの?指定して
というエラーメッセージが出てしまう。
コンパイルされない・・・・
フォーム一つだけならこんなことならずにコンパイルできるのに
フォームが1つのプログラムしか作れなくて困ってます。
助けてぇ
0330DelフサギコNGNG
 ∩ ∩
 ミ ゙''゙〜
 ミ∧,,∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ミ,,゚Д゚彡 < そんな風にならないけど…
 U U   \________

関係ないと思うけど、D6?Personal?
Updateはあてましたか?<<大切なのでアテテください
0331( = ゚ ω゚ )NGNG
D6personalだよぉぉ
0332( = ゚ ω゚ ) NGNG
2つのフォームのプログラムなら
Form1(Unit1.pas)
Form2(Unit2.pas)
をつくって、
メインフォームであるForm1のusesに
Unit2を追加するだけで良いの?
それから両フォームで使用する変数って
値が変化せずにちゃんと引き渡されるのかな
なんか変数が初期化されちゃうんだけど(0になる)
0333DelフサギコNGNG
 ∩|
 ミ ゙''゙゙゙つ
 ミ∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ミ,,゚Д゚彡 < で、とりあえずウプデト1は当てた?
 U U    \当ててないなら、大切だから当ててチョよ。

Form1のusesっていうのは
interface節ですよね。

今回の問題とは関係ないと思うけど
implementationにもusesできますので
区別しておきましょう。

>メインフォームであるForm1のusesに
>Unit2を追加するだけで良いの?
[ファイル(F)]-[ユニットを使う(U) Alt+F11]
するといいんじゃない。

>それから両フォームで使用する変数って
>値が変化せずにちゃんと引き渡されるのかな
>なんか変数が初期化されちゃうんだけど(0になる)

詳しくは

Delphiテクニックマスター集中講義 谷尻かおり(谷尻 豊寿 監修)
技術評論社 \2,718 ISBN4-7741-0305-5

このあたりの本に載ってるんだけど…
ここでは教え切れない面も多いので
変数スコープに関して書いている書籍を調べた方がいいです。


両フォームで変数を共通に使うよりも
Formのメンバーにアクセスする方がいいんだけどなあ....
0334( = ゚ ω゚ )NGNG
フサギコちゃん、ありがとうございます

なんかうまくいかないから、初めからやり直してる。
今のところ問題なくいってるよ
Form1,2を別々に作ってから、
後でプロジェクトの追加でForm1にForm2を追加すると
おかしくなっちゃうんだ。
でもこれだと、前に作ったformが全て使えない事になってしまうぅぅ。

updateは今DL中です。

Formのメンバーってなんですか?
0335ソース貼れNGNG
0336( = ゚ ω゚ )NGNG
変数宣言の仕方が良く判らないのですが
private
tt: integer; ←(1)
public
ss: integer; ← (2)
end;

var
rr: integer; ← (3)

この(1)で宣言したttは、このフォーム内でのみ使用
(2)のssはどのフォームでも使用可能ということですよね?
どのフォームからでも、ssの値を参照したり、
値を代入したりできるのですよね?
ここでは var はいらないのですか?

(3)のrrはこのフォーム内のみで使用可能らしいのですが
何故privateのところで宣言しないのでしょう?
(1)と(3)にはどんな違いがあるのですか?
■ このスレッドは過去ログ倉庫に格納されています