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

くだすれDelphi(超初心者用)その15

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Delphi使いが優しくコメントを返しますが、
お礼はDelphiの布教と初心者の救済をお願いします。

<前スレ>
くだすれDelphi(超初心者用)その14
http://pc5.2ch.net/test/read.cgi/tech/1085239007/

<関連スレ>
Delphi相談室(中級者以上)その12
http://pc5.2ch.net/test/read.cgi/tech/1064420818/
【ドキュメント】Delphi8 for .NET 2【どこ?】
http://pc5.2ch.net/test/read.cgi/tech/1078695271/

<その他>
ボーランド
http://www.borland.co.jp/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
0002デフォルトの名無しさんNGNG
<過去ログ>
13 http://pc5.2ch.net/test/read.cgi/tech/1081003641/
12 http://pc5.2ch.net/test/read.cgi/tech/1076610073/
11 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
10 http://pc2.2ch.net/test/read.cgi/tech/1074523803/
09 http://pc2.2ch.net/test/read.cgi/tech/1071294733/
08 http://pc2.2ch.net/tech/kako/1068/10682/1068201045.html
07 http://pc2.2ch.net/tech/kako/1065/10651/1065195699.html
06 http://pc2.2ch.net/tech/kako/1063/10632/1063202727.html
05 http://pc2.2ch.net/tech/kako/1061/10610/1061090908.html
04 http://pc2.2ch.net/tech/kako/1058/10588/1058834815.html
03 http://pc2.2ch.net/tech/kako/1055/10559/1055986736.html
02 http://pc2.2ch.net/tech/kako/1053/10537/1053757982.html
01 http://pc2.2ch.net/tech/kako/1051/10518/1051882835.html
0003デフォルトの名無しさんNGNG
3GETするのも面倒
0004Delフサギコ ◆A6VzDeLphI NGNG
     ∧,,∧,,,,,, )      (´⌒(´
  ⊂ミ゚Д゚⊂,,,,,,,`つ≡≡(´⌒;;;≡≡≡
ズザーーーーーッ    (´⌒(´⌒;;

4げ......



やれやれ・・・
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄
  ポ  ∧,,∧  ポ
  ン  ミ,,゚Д゚,彡 . ン
   (´;) U,U ミ〜 (;;).
(´)〜(⌒;;UU (´ )...〜⌒(`)
              
0005デフォルトの名無しさんNGNG
>>1
乙
0006デフォルトの名無しさんNGNG
前スレでアドバイスをくださった方、ありがとうございました。
0007デフォルトの名無しさんNGNG
新スレお疲れ様です。早速質問をさせてください。
TTrackBarのバーをドラッグ中にOnChangeを発生させない方法はありませんか?
OnChangeに限らず、Positionが変わっていて、マウスボタンが離された時を検出できればいいのですが...
0008デフォルトの名無しさんNGNG
サブクラス化するという案はどうか。
0009デフォルトの名無しさんNGNG
>>7
> Positionが変わっていて、マウスボタンが離された時を検出できればいいのですが

TTrackbar がフォームの上に置かれていればサブクラス化の必要はない。フォームで
Orientation が trHorizontal のときは WM_HSCROLL 、trVertial のときは
WM_VSCROLL メッセージを受け取って

private
{ Private 宣言 }
public
procedure WMHScroll(var Msg:TWMHScroll);message WM_HSCROLL;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

uses
CommCtrl;

procedure TForm1.WMHScroll(var Msg: TWMHScroll);
begin
inherited;
if (Msg.ScrollBar = Trackbar1.Handle) and (Msg.ScrollCode = TB_ENDTRACK) then
Label1.Caption := InttoStr(Trackbar1.Position);
end;

のようにする。
00107NGNG
ありがとうございます。
解決しました。
0011デフォルトの名無しさんNGNG
CやPerlのcrypt関数相当(アルゴリズムはDESかな?)の
ことが可能な暗号コンポーネントとかないでしょうか?
0012デフォルトの名無しさんNGNG
DelphiでCGIを作ってて、画像を動的に生成して
送ると言うところで、ちょっと戸惑ってます。

今はDelphiでプログラミングしていますが、最終的には
Kylixでコンパイルして、Linux上で動かす予定です。

ところが、TBitmapがXWindowなしには利用できない
みたいで困ってます。まあ、何らかのWindowシステムが
ないと、文字を描くのも不可能だから、当然といえば
当然なんでしょうが。

簡単なイメージなんで、最悪、メモリストリームに直接
アクセスして「お絵描き」しようかなとも考えてますが、
何か他にいい方法ある?
0013デフォルトの名無しさんNGNG
>>11
自分で作ればいいじゃん、とか思った漏れは素人ですか?
0014デフォルトの名無しさんNGNG
TMainMenuについての質問です
TMainMenuの領域内の色をWindowsの設定を変更しないで変更することはできるでしょうか?
0015デフォルトの名無しさんNGNG
ストリンググリッドを貼りつけたフォームに、ページめくりボタンをつけたいの
ですが、書き方が分かりません。

VBAでいうところの
SendKeys "{PGUP}"
SendKeys "{PGDn}"
みたいなものでいいんですが。
0016デフォルトの名無しさんNGNG
>>14
オーナードロー

>>15
キーを送るよりも LeftCol と TopRow を VisibleColCount、VisibleRowCount の
分だけ変化させることで、左上に位置するセルを指定するのがいいと思います。
それぞれ範囲を超えないように注意してください。
0017デフォルトの名無しさんNGNG
>>16さん
なるほど、とうなずくことができるにはまだまだ遠い未熟さが情けないですが、
とにかくヒントとしていただいた、VisibleColCount、VisibleRowCount
を手がかりにひたすら粘ってみます。
001815NGNG
ちょっとだけなるほど

MyList.Row:=MyList.Row + MyList.VisibleRowCount
でいけますね。

あとは、最初の最後どん詰まりの部分の処理の仕方。
たぶん何とかなります。
ありがとうございました。
001915NGNG
できました
きっちゃないコードですけど↓

procedure TForm2.PgAtoClick(Sender: TObject);
var
NanGyouMe:integer;
begin
MyList.Col:=0;
NanGyouMe:=MyList.Row+MyList.VisibleRowCount-1;
MyList.TopRow:=NanGyouMe;
MyList.Row:=NanGyouMe;
end;

procedure TForm2.PgMaeClick(Sender: TObject);
var
NanGyouMe:integer;
begin
MyList.Col:=0;
NanGyouMe:=MyList.Row-MyList.VisibleRowCount+1;
if NanGyouMe<1 then
begin
MyList.TopRow:=1;
MyList.Row:=1;
exit
end;
MyList.TopRow:=NanGyouMe;
MyList.Row:=NanGyouMe;
end;
0020デフォルトの名無しさんNGNG
>>15

procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.Perform(WM_VSCROLL,MakeWParam(SB_PAGEDOWN,0),0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
StringGrid1.Perform(WM_VSCROLL,MakeWParam(SB_PAGEUP,0),0);
end;
0021デフォルトの名無しさんNGNG
アップデートした後プロジェクトをコンパイルしたら、
動作がおかしくなっちゃった。
こんなもんです?   そうですか。
0022デフォルトの名無しさんNGNG
>>11
CのライブラリをBCCでビルドしてリンクするのが手っ取り早い。
0023デフォルトの名無しさんNGNG
ShowMessageで表示したダイアログを、ボタンを押さずしてプログラムから
自由に閉じる方法はありますか。
0024デフォルトの名無しさんNGNG
ありますけど、ユーザの心を読めるプログラムはないよ。どのタイミングで
閉じたいと思うの?
0025デフォルトの名無しさんNGNG
カスタムフォームにしてメーターなり残り時間なりを表示してCloseするのが無難では。
0026デフォルトの名無しさんNGNG
>>24
あ、ボタンを押さずしては念じてという意味ではないです。すみません。
あるデバイスを「取り外してください」というメッセージを、取り外したのをプログラムが感知したら
勝手に閉じたいのです。
>>25
情けないのですがフォームを二つ作るのに苦手意識がありまして・・・できる限り
そうでないやり方を探したいのです・・
0027デフォルトの名無しさんNGNG
>フォームを二つ作るのに苦手意識
ふいちまった。
0028デフォルトの名無しさんNGNG
Delphi製のダイアログとかフォームを開いたとき
ボタンにマウスカーソルが自動的に移動してくれないんだけど
どうにかならないの?
0029デフォルトの名無しさんNGNG
>>26

if Screen.ActiveForm.ClassName = 'TMessageForm' then
Screen.ActiveForm.Close;
0030デフォルトの名無しさんNGNG
>>28
「ボタンにマウスカーソルが自動的に移動」させるプログラムがアホなんでは?
0031デフォルトの名無しさんNGNG
>>30
あわせるのはOS。コンパネ-マウスで設定するやつ。
0032デフォルトの名無しさんNGNG
>>22
なるほど、そういう手もありますね。

昨夜から検索してて、UCrypt.pasってのが
OpenJane関連で見つかったんですが、
どうもトリップの作成用みたいで、こちらを
まず試してみます。
0033デフォルトの名無しさんNGNG
>>31

スマートムーブっていうのね。たしかに Delphi 製のボタンには行かないね。
コモンダイアログなら大丈夫だけれど。何が違うんだろう。デフォルトボタンの
設定の仕方かしら?
0034デフォルトの名無しさんNGNG
日本製は知らないけど、Torrys なんかの VCL コンポのDLサイトでは、暗号化コンポーネント
なんかは山ほどあるよね。そういうのは使えないの?
0035デフォルトの名無しさんNGNG
暗号やハッシュ周りはOpenSSLのソースパクって使うのが一番安心。
0036デフォルトの名無しさんNGNG
>>29
できました。ありがとうございます。
0037デフォルトの名無しさんNGNG
>>28
MLで昔同じ質問があって、中村氏が答えてた記憶がある。
Delのウィンドウ(ボタン等)に問題があるって言ってたような。
0038デフォルトの名無しさんNGNG
ダイアログリソースやテンプレートをつかった原始的な方法でダイアログをつくって
DEFPUSHBUTTON で指定したものは Delphi でコンパイルしても正常にカーソルが
動くね。むしろ、Delphi のフォームのウィンドウ関数がダイアログプロシージャと
して働いてないのが問題なのでは。
0039デフォルトの名無しさんNGNG
て言うか、まだそんな現象があるのか。
ま、そんなところがかわいいのだけれど。
0040デフォルトの名無しさんNGNG
服部さんが、「Cでできる事は、Delphiでもできる」って言ってたけど、
そんなこと言い出したら、VBもだよって言いたくなるレベルだな、デルヒって。
0041デフォルトの名無しさんNGNG
>>40 意味不明
0042デフォルトの名無しさんNGNG
HSPもだよ
0043デフォルトの名無しさんNGNG
> 服部さんが、「Cでできる事は、Delphiでもできる」って言ってたけど

だから、CみたくリソースエディタつかったダイアログをDelphiでつかえば
標準動作になるよ。問題なのは、TForm + TButton なわけで、C とコンパチ
のところではむしろ無問題。
0044デフォルトの名無しさんNGNG
>>43
40や42のようなアフォに説明しても無駄
0045デフォルトの名無しさんNGNG
delphiでwaveファイルを再生するにはどうすればいいのですか?
よろしくお願いします。
0046デフォルトの名無しさんNGNG
>>40-45はHSP信者
0047デフォルトの名無しさんNGNG
そうか、デルポイは中途半端はげって事ですか。
0048デフォルトの名無しさんNGNG
なんかさぁ、荒らすにしてももうちょっとこう気の利いた書き込みできんのかな。
あたまわるそうな書き込みで、読む方が恥ずかしくなってきた。
0049お前がウザいNGNG
0050デフォルトの名無しさんNGNG
'999,999,999'等のカンマが含まれる文字列からカンマだけを抜き取りたいのですが、
AnsiPos関数以外を使った方法でできないでしょうか?
AnsiPosだと一箇所しか返してくれないので、何かいい方法があったら教えて下さい。
お願いします。
0051デフォルトの名無しさんNGNG
StringReplace rfAll
0052デフォルトの名無しさんNGNG
Delphiでプログラムを組んだことすら無い香具師が荒らしてるんでしょ。
何が気に入らないのか分からないけど、放置しときなさい。
0053デフォルトの名無しさんNGNG
>>51
ありがとうございました。
0054デフォルトの名無しさんNGNG
PopupMenuと同じようなタイミングで消えるフォームを作りたいんですが
どういったコーディングをすればいいですか?
表示した瞬間は最も手前に表示され
他のアプリやフォームをクリックしたり切り替えたりしたら消えるようにしたいです。
0055デフォルトの名無しさんNGNG
>>54
ApplicationEvents のOnActivateとOnDeactivate
をうまく利用すればできる。

そのフォームだけで他にもフォームを表示させてるのなら
FormのOnActivateとOnDeactivate

タイマーを利用すればある程度時間を空けて消したりできる。
0056デフォルトの名無しさんNGNG
DelphiからDOSコマンドを実行したいのですが、どうすればいいのでしょうか?
使用したいこまんどはNET USEです。

Delphiのバージョンは7です。

WinExecをで実行しようとしたのですが、うまくいきませんでした。

よろしくお願いします。
0057デフォルトの名無しさんNGNG
実行するだけならWindows.CreateProcessかShellApi.ShellExecute。
でもWinExecでもいけるはずだけど。
GetLastErrorの値見るかWin32Checkで囲ってエラーの内容調べてみたら?
0058デフォルトの名無しさんNGNG
前スレで、データベースデスクトップでメモ型にデータを入力をする方法を
聞いたものですが、データベースエクスプローラーを使えと教えてもらいました。
グラフィック型も同じと思っていたらどうも違うようなのですが、何処で入力すれば
いいのでしょうか?
教えて君ですみません。
0059デフォルトの名無しさんNGNG
色をString型にしたりその逆はできますか?
TStringListで管理してファイルに保存したいのですが...
色のリストが保存できればなんでもいいのですが。
0060デフォルトの名無しさんNGNG
ColorToString
StringToColor
0061デフォルトの名無しさんNGNG
おおっ!ありがとうございます。
006215NGNG
>>20さん
遅まきながら感謝です。
>>19 にのせたコードは見直したら不備だらけで、実験を何回か繰り返しながら
どうにかモノにしました。
不細工ながら、それはそれでとりあえず満足。

こちらももちろんありがたくいただいておきます。
0063デフォルトの名無しさんNGNG
コンポーネントのプロパティの値は
コンストラクタ(create)内では、まだ反映されておらず、
デフォルト値のままなのでしょうか?
0064デフォルトの名無しさんNGNG
ReadStateで読み込むということ、
またそれがコンストラクタの後だと言うことは分かったのですが、
ReadStateがどのようにしてプロパティから値をとているか教えていただけませんか?

コンストラクタ内でプロパティの値で条件分岐がしたいのです。
どなたかよろしくお願いします。
0065デフォルトの名無しさんNGNG
>>64
プロパティを読み込むのはTReaderの仕事らしいけど、
それよりも、なぜそういうことをしたいのか詳細を書いた方が回答をもらいやすいかも。
0066デフォルトの名無しさんNGNG
(´-`).。oO(RPG作りたい…)
      (金も知識もゼロ…)
      (Delphiが良い感じなんでやろうと思う)
        
m9っ`・ω・´)<良い書籍やサイトは有りますか!?
        <誘導して下さい!
0067デフォルトの名無しさんNGNG
sage忘れスマソ
0068デフォルトの名無しさんNGNG
>>67
ageても良いんだぜェ!
単発質問スレ乱立を防ごうサ!
0069デフォルトの名無しさんNGNG
>>66
古い本かもしれないけどSOFTBANKから出てる「遊びのレシピ」って本がお勧め。
Delphiを使ったいろんなジャンルのゲームの作り方が載ってる。
0070デフォルトの名無しさんNGNG
>>66
そんな貴方にRPGツクール
0071デフォルトの名無しさんNGNG
>>66
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 【作れば?】
http://pc5.2ch.net/test/read.cgi/gamedev/1051110669/
0072デフォルトの名無しさんNGNG
DelphiってStringBuilderないの?
まさかMemoryStream使うとか・・・
0073デフォルトの名無しさんNGNG
>>72
えーと・・・・・・・・・・・・?
0074デフォルトの名無しさんNGNG
>>66
ぐぐればサイトはなんぼでも出てくる。
れっつとらい。
ただし只で手に入るDelphi6Personalは商用アプリ開発不可なので、
即売会で売ったりダウンロード販売するためには、Professional版を
購入する必要あり。
0075デフォルトの名無しさんNGNG
PageControlに追加したTabSheetの各タブに出るヒントを、別々の物にする方法は?
現在タブ部分のヒントは、全てPageControlの物が出てしまいます。
0076デフォルトの名無しさんNGNG
IndyのデモでCGIMailerがコンパイル出来ないんだけど、
[致命的エラー] CGIMailer.dpr(4): ファイル 'IdCompilerDefines.inc' が見つかりません
って出るんだけど、俺だけ?(´・ω・`)ショボーン
0077デフォルトの名無しさんNGNG
.incファイル探してあったらパス通してみたら。知らんけど
0078デフォルトの名無しさんNGNG
IdCompilerDefines.incが無いんです。
あきらめます。
0079デフォルトの名無しさんNGNG
>>72
.NETやJavaは文字列がオブジェクトなので専用の構築クラスを使わないと遅くてやってられないが
Delphiだと+演算子使いまくっても充分なスピードがでるよ
一応TStringStreamってのもある

…ってので満足か?
>>73 多分>>72はよくわかってない煽り
0080デフォルトの名無しさんNGNG
>>78
C:\Program Files\Borland\Delphi7\Source\Indyに普通に存在するが?
008178NGNG
Indyのアップグレードしたらありました。
ありがとう。
それから、Indyのホームページぐぐったら、
Del7のは、バグがあるからDel6が良いってのがあったんですが、
Lクライアントとかサーバーとか勉強して作りたいんですが、使わない方が良い?
0082デフォルトの名無しさんNGNG
バグによりけりだろうけど、入門レベルなら気にしても仕方ないんじゃない?
0083デフォルトの名無しさんNGNG
というかIndyでソケット入門ってつらくないか?
ドキュメントがないって言う意味で。分かるならいいけど。
0084デフォルトの名無しさんNGNG
ちょいと聞きたいんだが。
Del1からDel7をWin2000にインスコってできるのか?
0085デフォルトの名無しさんNGNG
以下の4000を一発で求めることが可能な動的配列のサイズを求める関数ってありますか?

procedure TForm1.Button1Click(Sender: TObject);
var
 A: array of array of Integer;
begin
 SetLength(A, 10, 100);
 ShowMessage(IntToStr(Length(A) * Length(A[0]) * SizeOf(Integer))); //4000
end;
0086デフォルトの名無しさんNGNG
ない
0087デフォルトの名無しさんNGNG
>>86
わかりました。
0088デフォルトの名無しさんNGNG
>>84
とりあえず6,7,8は共存させて問題ない(私のPCがそうだから)
0089デフォルトの名無しさんNGNG
>>88
なるほど。
いまPCにインスコされてるやつはDel3とDel5。
Del3が入るならDel4は当然入ると思うから良しと。
そこで、Win2000にDel2.0Jが入るのか疑問に思っているところなんだ。
0090デフォルトの名無しさんNGNG
確か入る。
2,3,4,5を入れてる人がいた。
0091デフォルトの名無しさんNGNG
98だったかも・・・
0092デフォルトの名無しさんNGNG
>>65
TReaderでしたか、ありがとうございます。

タスクトレイにアイコンを表示させるための、コンポーネントを作っているのですが、
コンストラクタ内でFTask(駐屯型かどうか)の値をもとに、
アイコンを登録するかどうかでわけたいのです。
駐屯型でない場合は、最小化時のみ、アイコンを表示させようと思っています。

NID:TNotifyIconData;

constructor TTrayIcon.Create(Owner: TComponent);
begin
  if not (csDesigning in ComponentState) then begin
    ・・・
    with NID do begin
     ・・・
    end;
    // FTray ← の値が常にFalseだから使えない。。。
    if FTray then Shell_NotifyIcon(NIM_ADD, @NID); {アイコン登録}
  end;
end;

既存のコンポーネントで、Visibleの値をもとに、
表示したり、されなくしたりするのはどのようにしているのでしょうか。
0093デフォルトの名無しさんNGNG
>>75
>PageControlに追加したTabSheetの各タブに出るヒントを、別々の物にする方法は?

uses
CommCtrl;

procedure TForm1.ApplicationEvents1ShowHint(var HintStr: String;
var CanShow: Boolean; var HintInfo: THintInfo);
var
i,itm:integer;
r:TRect;
begin
if HintInfo.HintControl.Name = 'PageControl1' then begin
itm := -1;
for i := 0 to PageControl1.PageCount-1 do begin
PageControl1.Perform(TCM_GETITEMRECT,i,LPARAM(@r));
if PtInRect(r,HintInfo.CursorPos) then itm := i;
end;
if itm <> -1 then HintStr := IntToStr(itm)+'-th tab だよ';
end;
end;
0094デフォルトの名無しさんNGNG
CとかJavaならHello Worldを出力せよってプログラムを最初にやると思うんだけど
Delphiでそれにあたるようなプログラムは何でしょう?<最初に作れと言われるプログラム
0095デフォルトの名無しさんNGNG
>>94
コンソール版hello,worldと
ボタンを押すとメッセージが表示されるフォーム版hello,world
0096デフォルトの名無しさんNGNG
最初に作るアプリはなぜかメモ帳が多いな。
0097デフォルトの名無しさんNGNG
>>94
http://www.w-frontier.com/delphi/index.html
はどう?
0098デフォルトの名無しさんNGNG
Delphi6 ProでHTMLを出力したいんだけど
タグの出力等を支援してくれるライブラリってない?
0099デフォルトの名無しさんNGNG
>>98
入力ならともかく出力は単なるテキストファイルの出力なんだから
私怨とかいらないんじゃないの?具体的にどんな私怨が欲しいの?
0100デフォルトの名無しさんNGNG
>>99
rubyのCGIクラスやphpみたいなの
0101デフォルトの名無しさんNGNG
>>98
IntraWeb使ってしまえばぽとぺたでHTML吐けるよ
■ このスレッドは過去ログ倉庫に格納されています