[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 02/07 11:17 / Filesize : 190 KB / Number-of Response : 625
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Delphi初心者のための寺子屋



1 名前:デフォルトの名無しさん mailto:sage [2005/11/23(水) 23:31:08 ]
Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。


75 名前:デフォルトの名無しさん [2005/12/11(日) 22:32:44 ]
嘘か真かわからんが、QualityCentralにQC#21940で、「Delphi2006 ハング」との事です。時々、ハングアップするとの事です。んー。今まで、Qualityを無視しつづけたツケだな。 -- 2005-12-07 05:54:52 (水) New

2005なんか 最初 吹っ飛んで消滅していたじゃん。 消滅からハングに 大差ないしおどろくことではないかと  先行バグ取り隊の情報引き続きよろしく  -- 2005-12-07 09:14:09 (水) New

>「消滅からハングに 大差ないしおどろくことではない」 どっちにしろ、真面目につかうものではなさそうですね。

「どっちにしろ、真面目につかうものではなさそうですね」 しらずに2005のときせっかく数時間かけて書いたコードが消滅して悲しい思いしたよ -- 2005-12-07 15:22:52 (水) New

76 名前:デフォルトの名無しさん [2005/12/15(木) 07:29:16 ]
>>74
function CountAlpha(var str:    AnsiString):    Integer;
var
    i:    Integer;
    cnt:    Integer;
begin
    cnt:=0;
    i:=0;

    while (i <= Length(str)) do
    begin
        if ( (str[i] in LeadBytes)) then
        begin
            Inc(i,2);
        end
        else
        begin
            if (str[i] in ['a'..'z']) or (str[i] in ['A'..'Z']) then
            begin
                Inc(cnt);
            end;
            Inc(i);
        end;

    end;
    result:=cnt;
end;
//ここまで
よろしくお願いします

77 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 10:26:25 ]
>>76
すばらしい! 94点

減点は
CountAlpha(var str: AnsiString): → CountAlpha(const str: AnsiString):

const にして、関数内で変更しない(コピーされない)ことを保証し、
IntToStr(CountAlpha(Memo1.Text)) などと、変数を確保しなくても使えるように
することは重要です。var だと str := Memo1.Text; IntToStr(CountAlpha(str))
などとしなければ使えませんね。

減点ではないけど

if (str[i] in ['a'..'z']) or (str[i] in ['A'..'Z']) then

の部分は

if (str[i] in ['A'..'Z','a'..'z']) then

とすることもできます。

文字列のインデックスは1から始まります。ですから

i:=0; ではなく、 i:=1;

で初期化してください。次の課題は少し事前に検証してから出します。




78 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 10:42:34 ]
>>76

つぎの課題は、もうちょっと難易度が上がります。
前回同様、アルファベットの文字を見つけるのは同じですが、塊として数えてください。

例えば

This is a pen.

の場合は4を返すような関数をつくってください。アルファベット以外の文字(空白も含む)で
区切られたアルファベットだけで出来ている語句の数を数えます。

「...ことを保証し、IntToStr(CountAlpha(Memo1.Text)) などと、変数を確保しなくても使えるように」

の場合は、「IntToStr」「CountAlpha」「Memo」「Text」の4つです。

79 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 11:52:06 ]
ヒント
新幹線で東京から名古屋まで行くときのトンネルの数を数えるのと同等です。
トンネルの入り口を数えるといいですね。でも入り口を認識するためには
出口を認識する必要があります。出口を認識するためには、「いまトンネルの
なかにいる」という<状態>を変数に保存しておかなければなりません。また、
トンネルの中にも駅があることを考慮しなければなりません。ですから、名古屋
は違いますが終点がトンネルの中の場合もありえます。

80 名前:デフォルトの名無しさん mailto:sage [2005/12/15(木) 12:22:11 ]
すみません(こればっかり)、ヒントの最後の2行は、見つかった語句の長さを
記録するときのものです。今回は無視してください。入り口の数だけで十分です。

81 名前:デフォルトの名無しさん [2005/12/16(金) 13:56:59 ]
●問題2
エディットボックス(Edit1)に入力した数字までの合計値を、ボタン(Button1)を押したら、表示(Label1に表示)させよ。
なお変数は、エディットボックスの入力値(a)、合計値(Sum)、ループのカウンタ(i)とする。

procedure TForm1.Button1Click(Sender: TObject);
var
i,Sum:□□□□□□□;
a:integer;
begin
a:=StrToInt(Edit1.text);
Sum:=0;

for i:= □ to □ do
begin
Sum:= □□□+□
end;

Label1.Caption:=IntToStr(Sum);
end;

教えて!↑

82 名前:デフォルトの名無しさん mailto:sage [2005/12/16(金) 15:44:01 ]
Integer
0
a
Sum
i

83 名前:デフォルトの名無しさん mailto:sage [2005/12/18(日) 04:51:49 ]
すんません、教えてください。

TPopupMenuに動的にメニューを追加する方法なんですが、サブメニューも追加したくて・・・
例えば

A
 -SubA
 -SubB
B
 -SubA
 -SubB
 -SubC

こんな感じでサブメニュー含めて動的に追加するにはどうしたらいいですかね?



84 名前:デフォルトの名無しさん mailto:sage [2005/12/18(日) 09:33:06 ]
>>83
>>57

85 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 06:50:34 ]
>>78-80
function CountAlphaWord(const str:    AnsiString):    Integer;
var
    i:    Integer;
    cnt:    Integer;
    isAlphaNow:    Boolean;
    isAlphaPrev:    Boolean;
begin
    isAlphaPrev:=False;

    cnt:=0;
    i:=1;

    while (i <= Length(str)) do
    begin
        isAlphaNow:=False;

        if ( (str[i] in LeadBytes)) then
        begin
            Inc(i,2);
        end
        else
        begin
            if (str[i] in ['a'..'z', 'A'..'Z']) then
            begin
                isAlphaNow:=True;
            end;
            Inc(i);
        end;


86 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 06:54:35 ]
        if (not isAlphaPrev) and isAlphaNow then
        begin
            Inc(cnt);
        end;
        isAlphaPrev:=isAlphaNow;

    end;

    result:=cnt;
end;

//ここまで
よろしくお願いします

87 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 14:36:57 ]
>>85-86

100点。

キモは、

if (not isAlphaPrev) and isAlphaNow then

ですね。これでトンネルの入り口を認識しているのだね。Boolean の変数を二つ
つかって、論理が分かりやすくなっています。わたしの実装だと、IsTunnel という
Boolean の変数をひとつだけ使っているので、今回の実装より簡単ですが、コードは
読みにくいです。他人の実装をみると、自分との違いが分かって勉強になります。

さて、次の課題は、多分予想できていると思いますが、トンネルの出口も認識して
数だけでなく、位置と長さも返すような関数を作ってください。

type
TPosLength = record
Position: integer;
Length : integer;
end;

TPosLenArr = array of TPosLength;

function SearchAlphaWord(const str: string; var pl: TPosLenArr): integer;

>>79 の全文をヒントとしてください。

88 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 05:34:45 ]
>>87
function SearchAlphaWord(const str: string; var pl: TPosLenArr): integer;
var
    i:    Integer;
    cnt:    Integer;
    isAlphaPrev:    Boolean;
    isAlphaNow :    Boolean;
    iPrev:    Integer;
begin
    isAlphaPrev:=False;

    cnt:=0;
    i:=1;

    while (i <= Length(str)) do
    begin
        isAlphaNow:=False;
        iPrev:=i;

        if ( (str[i] in LeadBytes)) then
        begin
            Inc(i,2);
        end
        else
        begin
            if (str[i] in ['a'..'z', 'A'..'Z']) then
            begin
                isAlphaNow:=True;
            end;
            Inc(i);
        end;

89 名前:デフォルトの名無しさん [2005/12/23(金) 05:35:25 ]
        if (not isAlphaPrev) and isAlphaNow then
        begin
            Inc(cnt);

            if cnt>Length(pl) then
            begin
                SetLength(pl, cnt+10);
            end;
            pl[cnt-1].Position:=iPrev;
        end
        else    if isAlphaPrev and (not isAlphaNow) then
        begin
            pl[cnt-1].Length:=iPrev-pl[cnt-1].Position;
        end;

        isAlphaPrev:=isAlphaNow;
    end;

    SetLength(pl, cnt);
    result:=cnt;
end;
//ここまで
よろしくお願いします

90 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 11:51:19 ]
>>88-89

90点。

ヒントの

> トンネルの中にも駅があることを考慮しなければなりません。ですから、名古屋
> は違いますが終点がトンネルの中の場合もありえます。

を忘れています。アルファベットでテキストが終わる場合を考慮してください。

...
isAlphaPrev:=isAlphaNow;
end;

if isAlphaNow then pl[cnt-1].Length:=iPrev+1-pl[cnt-1].Position; // これを追加

SetLength(pl, cnt);
result:=cnt;
end;

あと、一つも見つからない場合もありますので、while の前に

isAlphaNow := false;
iPrev := 1;

で初期化しておくとコンパイラの警告が出ませんね。

文字列操作は列挙や置換、抽出、パースなどいろいろありますが、少々当方も飽きてきた
ので次はリストクラスから出題します。すこし時間をください。

91 名前:デフォルトの名無しさん mailto:sage [2005/12/23(金) 12:10:18 ]
>>88-89

リストクラスはもっとも簡単そうな文字列のリスト TStringList から始めます。
最初はソートの練習です。

procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringList;
  i: integer;
begin
  Randomize;
  sl := TStringList.Create;
  try
    for i := 1 to 20 do sl.Add(IntToStr(Random(1000)));
    Memo1.Lines.Assign(sl);
  finally
    sl.Free;
  end;
end;

にすると、0-999 のランダムな数値に対応する文字列が sl に20個保持され、その内容が Memo1 に
表示されます。コードを継ぎ足して、数値の小さい方から(昇順)並べ直して見てください。

TStringList.CustomSort を使います。

92 名前:ささ ◆6KVcpBNXy. [2006/01/26(木) 15:45:51 ]
みなさん。こんにちゎ。経済学部のささと申します。
パスカル(Delphi)の授業での課題がわかりません。。教えてください!
3科目、10人分のデータを入力して各人の合計点と科目毎の平均点を作れ!
という課題が出ました。。。

先生に下記を改変するとやりやすいといわれました。repeatとwhileとforまでしか習っていません。
Score :array[0..1000] of integer; 
begin
writeln('入力得点の平均と偏差値を計算します'); writeln('入力後、負の数を入力すると…終了します。');
kazu :=0;
repeat
write('点数は?'); readln(data);
if data >= 0 then
begin 
kazu := kazu + 1;
score[kazu] := data
end
until data < 0;
goukei := 0;  for i := 1 to kazu do goukei := goukei + score[i];  heikin :=goukei / kazu;
goukei :=0;  for i := 1 to kazu do  goukei := goukei + Sqr(score[i]); hensa := sqrt(goukei /kazu - sqr(heikin));
writeln('点数  偏差値');
for i := 1 to kazu do  writeln(score[i]:4, 50 +10 * (score[i]-heikin)/ hensa:10:1);
writeln(' 平 均 =',heikin:5:1);  writeln('標準偏差=',hensa:5:1);
readln;
end.

93 名前:棄民党党首 ◆8slekwWKD6 [2006/01/26(木) 17:00:39 ]
やひゃひゃひゃ。おまいら。

AssignFile(f, s); Reset(f);

で s にアクセント記号と漢字交じりのファイル名をWideStringでぶちこんでみたら
開かんぞ。

TntのUnicode Componentsをいぢってみたが、AssignFileのUnicode版がみつからん。

でしかたないから
WideRenameFileで名前を'safe.bin'とかに変更しちゃって。
フツ〜にAssignFileで開いて処理してからまた
WideRenameFileで名前をUnicodeの名前へもどしますた。

わたしってなんて天才♪



94 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 02:28:56 ]
Delphiってなくなるの?
Turbo Pascal時代からずっと使って来ただけに、
手に馴染んだ開発環境がなくなると困る。

95 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 04:04:10 ]
>>94
ボーランドが手放すだけでDelphiがなくなるわけじゃないから安心しる。

96 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 08:15:16 ]
買い手が無ければなくなるんじゃね?

97 名前:デフォルトの名無しさん [2006/02/10(金) 14:45:48 ]
で、MDIでWM_COPYDATAを子フォームで受け取るにはどーすんの?


98 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 16:58:38 ]
受け取るのは簡単だろ

99 名前:デフォルトの名無しさん [2006/02/10(金) 17:29:53 ]
>>98
え?マジすか?kwsk!
とあるスレッドからMDI子フォームにSendMessageしたいんです。
そのスレッドでは、MDI子フォームのウィンドウハンドルを取得する事は
出来るのですが、SendMessageしてもMDI子フォームにメッセージが来ないです。
もう泣きそうです。
もちろん、MDI子フォームではメッセージを受け取れるようにしているのですけども・・・。


100 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 17:49:34 ]
どうやってハンドルをみつけたの?

101 名前:デフォルトの名無しさん [2006/02/10(金) 18:13:45 ]
改行が多いと怒られたので、かなりハショってます。
メッセージを送る側では
procedure Thread.SendMsg(sClassName: String; nKind: Cardinal; pInfo: Pointer; nInfoSize: Integer);
var
begin
Wnd := FindWindow(PChar(sClassName), nil);
if (Wnd <> 0) then begin
:
SendMessage(Wnd, WM_COPYDATA, WPARAM(Wnd), LPARAM(@Cd));
end;

とし、SendMsg('TForm', ....); と、使っています。で、
受け取る側(MDI子フォーム)では
procedure WMCopyData( var sMsg: TWMCopyData ); message WM_COPYDATA;
を、privateに宣言して
procedure TForm.WMCopyData(var sMsg: TWMCopyData);
:
begin
pMessage := nil;
if (sMsg.CopyDataStruct.dwData = ID_TEST) then begin
:
:
:
end;
としています。


102 名前:デフォルトの名無しさん mailto:sage [2006/02/10(金) 19:22:04 ]
それでほんとに、目的 MDI 子ウィンドウが見つかってる?
一度 Spy++ か WinInsight で確かめたら?

103 名前:デフォルトの名無しさん [2006/02/10(金) 19:45:00 ]
取れてるようですが・・・ダメなんでしょうか?
通常どうやるのかわからないもので・・・。
とりあえず実行させて、FindWindowの戻り値を見たら0x604A6でした。
Spy++の検索ウィンドウで0x604A6を検索したら、目的のウィンドウが
検索されました。一応ウィンドウハンドルは取れているようでした。
うーん・・・困りました・・・。




104 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 02:57:20 ]
部分範囲型って、実際バリバリ使ってる人います?
便利なようでいまいち、使いどころが…。
動作中チェックありにして、速度とか問題ないですか?

105 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 15:13:33 ]
そもそも Delphi を実際バリバリ使ってる人なんか、そんなにいないからね

106 名前:デフォルトの名無しさん mailto:sage [2006/02/14(火) 21:37:45 ]
バリバリじゃない。さり気なく使うんだ。

107 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 10:29:36 ]
さりげなく、こっそりと、ひそかに・・・な。

108 名前:デフォルトの名無しさん mailto:sage [2006/02/15(水) 11:11:39 ]
いや、ペタペタと使う。

109 名前:デフォルトの名無しさん mailto:sage [2006/02/21(火) 23:53:44 ]
>>101
ヘルプに有るように、FindWindowは子ウィンドウは探してくれないよ。
同じクラス名を持つ別のウィンドウのハンドルを返していると思われ。

110 名前:デフォルトの名無しさん [2006/02/22(水) 23:07:35 ]
質問です。色付きのボタンを作ることはできますか?
パネルを色つきにしてOnClickという事もできますが
それだとクリックされたときにボタンのように
凹んだりしないのでわかりづらいし・・・
なにかいい方法はありますでしょうか?
どなたか、よろしくお願いします。


111 名前:デフォルトの名無しさん mailto:sage [2006/02/22(水) 23:14:06 ]
>>110
まさか本当に凹んでるとか思ってないよな?

112 名前:デフォルトの名無しさん mailto:sage [2006/02/23(木) 00:27:17 ]
Paintメソッドをoverrideして自分で描画するとか。


113 名前:Delフサギコ ◆A6VzDeLphI mailto:sage [2006/02/23(木) 00:51:33 ]

           (´⌒;;
;⌒`)   ∧,,∧   そういうのだいたい
 ;; `)./ミ,,゚Д゚彡  誰か作ってるよ。
   //\ ̄ ̄旦~   (´(´⌒)
  // ※.\___\
 \\※ ※ ※ ※ ※ヽ
   \`ー──────ヽ
    ────────

homepage1.nifty.com/cosmic/delphi/vcl.html#cutebtn

homepage2.nifty.com/Mr_XRAY/Delphi/plButton/index.htm



114 名前:デフォルトの名無しさん [2006/03/02(木) 22:41:07 ]
152 :  :2006/03/01(水) 06:16:00 HOST:ed251.opt2.point.ne.jp
削除対象アドレス:
 pc8.2ch.net/test/read.cgi/tech/1138370150/
 pc8.2ch.net/test/read.cgi/tech/1132756268/
 pc8.2ch.net/test/read.cgi/tech/1132013685/
削除理由・詳細・その他:
 6. 連続投稿・重複

115 名前:デフォルトの名無しさん mailto:sage [2006/03/03(金) 01:13:30 ]
Dr.Dのマシン語寺子屋

116 名前:デフォルトの名無しさん [2006/03/31(金) 11:14:10 ]
TBitmap→TJpegImage→Jpegファイル、とやってますが、
DDBからDIBにするとメモリ減りますか?

コーディングも簡単でつか?

117 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 12:06:28 ]
やってることと、質問の内容が噛み合ってない

118 名前:116 [2006/03/31(金) 13:30:05 ]
いやだから、

TBitmap(DDB)→TJpegImage→Jpegファイル
から
TBitmap(DIB)→TJpegImage→Jpegファイル
に変更。

今は意識してないけど、TBitmapってデフォはDDBだおね?

119 名前:デフォルトの名無しさん mailto:sage [2006/03/31(金) 13:50:09 ]
大差ないよ。

120 名前:デフォルトの名無しさん mailto:age [2006/05/29(月) 00:58:17 ]
feeddemonってRSSリーダーがあるんですが
v1のときにhtaのような使い方をしている
部分(左のチャンネルリスト)をどう実装してるのか
わからないんですが、誰か教えてください詳しい人


121 名前:デフォルトの名無しさん mailto:sage [2006/05/29(月) 13:16:35 ]
> Delphi初心者が問題をコツコツと解きながらレベルアップするためのスレです。

すれ違い

122 名前:デフォルトの名無しさん [2006/06/09(金) 17:59:34 ]
マウスカーソルをアルファベット文字、もしくは単語にしたいのですが、
簡単にできますか?

アルファベット毎にカーソルファイルを作るのでなく、
コーディングでやりたいです。

123 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 18:47:12 ]
簡単にはできないでしょ。すなくとも動的にアルファベットの画像をつくらなきゃならないし。



124 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 19:15:11 ]
>>122
forum.nifty.com/fdelphi/samples/00368.html

TBitmapを作成して そこに文字を書いて、
それからCreateCursor

125 名前:122 mailto:sage [2006/06/12(月) 08:41:29 ]
>>123 >>124

サンクス。
ちょっとひねればコーディングできそうですね。

126 名前:デフォルトの名無しさん mailto:sage [2006/09/03(日) 09:14:12 ]
どうぞよろしくお願いします

Delphi7.0上で、3層の情報系の業務アプリケーションを構築しています
データベースはOracle9iです
UIでは、ADOレコードセットを入力データソースするMicrosoftのActiveXコンポーネント
を使用しています
BDE、DBExpressやBizSnapを利用すれば3層のデータアプリケーションは作成できる
ことは分かりました
データセットプロバイダ経由でデータを取得しようとすると、クライアント側はClientDataSet
として受け取ることになるのですが、どこかでADOレコードセット形式に変換しなければなりません

試しにClientDataSetをまわしながらADOレコードセットにフィールド定義とデータ値をコピーする
方法を試してみましたが、処理時間とCPU負荷が半端ではなく、とても採用できませんでした
他には、BizSoapを利用した形式では、サーバー側でADOレコードセットとしてデータ取得後に
Saveメソッドを利用してXML形式で一旦データ出力し、Soap経由でテキスト送信し、クライアント
側では受信内容をファイルとして出力しADOレコードセットのLoadメソッドをCallしてXMLファイル
から復元する方法を試したみましたが、これも採用できるものではありませんでした
素直にクライアント側でADOレコードセットとして取得可能な方法としては、リモートデータセット
(Microsoft RDS)を利用したDComアプリケーションとして構築する方法もあるので試してみました
これは、非常に高速で20万件程度のデータもほぼ一瞬でクライアント処理でき驚いたものですが、
MicrosoftのサポートページではRDS自体が今後は非推奨の技術として明記されており、その点
が引っかかっております

どうしてもクライアント側で扱うデータ量が数十万件程度あることでパフォーマンスが重要になって
しまいます。
オーバーヘッドがなるべく最小の形でClientDataSetからADOレコードセット形式に変換する方法は
ないものでしょうか
もしくは、素直にADOレコードセットとしてクライアント側で一発でデータ取得できれば嬉しいです

長文になってしまい申し訳ありません
どうぞよろしくお願いいたします


127 名前:126 mailto:sage [2006/09/03(日) 09:22:44 ]
126です
大変失礼しました
[ くだすれdELPHI(超初心者用) ] のスレの方に移動します

128 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 00:03:00 ]
>>1
問題だしておくれ
初心者でも10分ぐらいで解けて、面白味のあるものがいい

129 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 08:47:19 ]
じゃ、俺から問題

ボタンを二つ用意し、片方を非表示とする。
表示されているボタンを押すと、非表示だったボタンを表示し、押されたボタンを非表示に。
これを交互に繰り返せるものを作れ。

130 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 10:14:48 ]
くだらね┐(´〜`;)┌

131 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 11:34:13 ]
>>130
ならおまえがだせ。
と、いいたいところだが、これはどうだ?
コントロールのオーナーをTForm1からTForm2に変える。

132 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 12:30:13 ]
他のスレでTPrinterの話題が出てたんで。

用紙の左上から右に5cm、下に5cmの位置に
「はろーわーるど」と印字せよ
フォントは何でもいい

133 名前:デフォルトの名無しさん mailto:sage [2006/09/11(月) 15:51:09 ]
初心者の基準を考えよ



134 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 16:57:18 ]
iniファイル作って
初期データ読み込み書き込みはどうだ?

135 名前:デフォルトの名無しさん [2006/09/12(火) 17:10:37 ]
初心者の基準を考えよ

136 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 20:17:27 ]
procedure TForm2.Button1Click(Sender: TObject);
begin
  Button1.Visible:=not Button1.Visible;
  Button2.Visible:=not Button2.Visible;

end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  Button2.OnEnter:=Button1Click;
  Button2.Visible:=False;
end;


137 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 20:18:58 ]
あ、途中で書き込み押しちゃった
>>136>>129への回答です
短くなるように工夫しました
採点お願いします

138 名前:デフォルトの名無しさん [2006/09/12(火) 20:25:08 ]
わざわざコードで
  Button2.OnEnter:=Button1Click;
  Button2.Visible:=False;
をする必要が無い。
0点。

139 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 20:30:07 ]
そりゃプロパティでも出来るけどあえて明示してるんでしょうが。

140 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 20:42:49 ]
ほかにもフォームの位置とかサイズとか、明示しろよ。

141 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 20:54:32 ]
こりゃいかん。

142 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 21:10:23 ]
てゆうか先生!なんでOnEnterやねん!Clickや!!
と突っ込むところではないの?


143 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 21:12:52 ]
ほんとだwwww



144 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 22:23:37 ]
TD2006ってコンポにフォーカスさせてF1押してもヘルプでないよね

145 名前:デフォルトの名無しさん mailto:sage [2006/09/12(火) 23:28:50 ]
しらねぇよ。Del6per の方がましだし、そんなの使うヤツの気が知れん

146 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 03:30:32 ]
procedure TForm1.Button1Click(Sender: TObject);
const
FILE_URL = '203.131.199.131:8060/koreiina';
FILE_PATH = 'test.mp3';
var
fs: TFileStream;
begin
fs := TFileStream.Create(FILE_PATH, fmCreate);
try
with IdHTTP1 do begin
Get(FILE_URL, fs);
end;
finally
fs.Free;
end;
end;

147 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 08:14:13 ]
>>145
可哀そうに

148 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 11:33:34 ]
TDって略すとTurbo Debuggerかと思ってしまう俺。
(さすがにTokyo Disnylandとは思わないが)

149 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 19:35:33 ]
>>144
可哀そうに

150 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 21:21:06 ]
>>134
iniファイル読み書きの習作をつくってみました
普通にファイルの読み書きするより簡単かもしれない
ちょっと感動!!
procedure TForm1.Button1Click(Sender: TObject);
var
  iniFile:  TInifile;
begin
  iniFile:=TIniFile.Create('ook.ini');
  try
    count:=iniFile.ReadInteger('CounterApp', 'Count', 0);
    Inc(count);
    iniFile.WriteInteger('CounterApp', 'Count', count);
  finally
    iniFile.Free;
  end;
  ShowMessage(IntToStr(count));
end;



151 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 21:30:06 ]
フルパスつかっとけ

152 名前:デフォルトの名無しさん [2006/09/13(水) 22:06:31 ]
EXEファイルと同じフォルダが前提ならそのままがいいと思うが。

153 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 22:39:21 ]
>>152
お前はそのままでいいよw



154 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 23:24:42 ]
>>152 は、今後大変だな・・・

155 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 00:35:54 ]
>>150
お主、俺を超えたな!?

156 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 04:04:15 ]
カレントディレクトリが変わるたびに、あちこちにいっぱい ini をつくるけどね

157 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 05:19:24 ]
TIniFile って相対パス渡すとプロファイルフォルダに作られなかったっけ?

158 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 07:56:03 ]
なんにせよそういう不安定要素は削除しないとな

159 名前:デフォルトの名無しさん mailto:sage [2006/09/14(木) 10:09:08 ]
>Delphiで無料でプログラミングしてみるお
>ttp://pc8.2ch.net/test/read.cgi/tech/1139675970/239
>ソースと実行ファイル
vipperup.orz.hm/miniup/src/viup0403.zip

これって、もう手に入らないの?

160 名前:デフォルトの名無しさん [2006/09/14(木) 16:02:35 ]
 

161 名前:デフォルトの名無しさん mailto:sage [2006/09/29(金) 18:21:31 ]
授業を受けに来たのに先生がいませんよ。有給ですか?

162 名前:デフォルトの名無しさん mailto:sage [2006/09/29(金) 18:37:24 ]
>>132


163 名前:デフォルトの名無しさん mailto:sage [2006/10/06(金) 22:25:29 ]
別のアプリケーションにエンターキーを送りたいのですが、アプリケーション側でなにか
対策をしているらしく、keybd_event ではエンターキーだけが認識されません。
(そのアプリ上でエンターキーを直接押せば認識される)

こういった場合、どのようにすればいいのでしょうか?



164 名前:163 mailto:sage [2006/10/06(金) 22:49:19 ]
>>163
すみません、、、スレ間違えました。別スレに行ってきます。

165 名前:デフォルトの名無しさん [2006/10/16(月) 03:02:58 ]
Delphiで
Vbでいうところの Validate イベントを実現したい。
どうすればいい?

Procedure TXXXXX.OnValidate(Sender : TObject;Cancel : Boolean);

Cancel := True;

とすれば、フォーカスが抜けないようにする。
どうやったらできるんだろう?

TEdit を継承して、
WndProc を オーバーライドして
CM_EXIT をフックしてみた。

TEdit ではうまくいったが
TComboBox ではうまくいかなかった(DropDownList では おk で DropDown ではNg だった)。

誰か経験者か、うまいやり方知ってるひと教えてください。

166 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 09:10:19 ]
やったことないけどOnEnterでValidateすべきかどうか(どこかで)設定しといて
WM_KILLFOCUS受け取ったときに上記状態なら指定されたところにチェックしにいくとか

167 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 09:25:28 ]
OnChangeかOnExitの時に、
Cancel=Falseなら、Combobox.setfocus


168 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 10:42:34 ]
procedure TForm1.hogeExit(Sender: TObject);
begin
  チェック処理
  if エラー then
  begin
    Enabled := False;
    Application.ProcessMessages;
    Enabled := True;
    hoge.SetFocus;
  end;
end;

169 名前:デフォルトの名無しさん [2006/10/16(月) 16:57:31 ]
TPrinterで印刷の集約指定等の設定変更できますか?

170 名前:デフォルトの名無しさん [2006/10/16(月) 17:36:53 ]
印刷設定ダイアログ結果をWindowsに反映する方法教えて下さいでつ。

171 名前:デフォルトの名無しさん [2006/10/17(火) 01:33:57 ]
>>166
ありがとうございます。
WM_KILLFOCUSでも同じでした。

>>167,168
ありがとうございます。

TComboBox の派生クラスに OnValidate イベントを実装したいのです。

172 名前:デフォルトの名無しさん [2006/10/19(木) 10:09:05 ]
DoExitをオーバーライドするのはどうですか?

procedure TMyCombo.DoExit;
var
  Cancel: Boolean;
begin
  if Assigned(FOnValidate) then begin
    Cancel := False;
    FOnValidate(Self, Cancel);
    if Cancel then begin
      SetFocus;
      Exit;
    end;
  end;

  inherited;
end;


173 名前:デフォルトの名無しさん [2006/10/19(木) 10:47:13 ]
Delphi7
SQLServer2000 使用です。

exceptにて、EDatabaseErrorが発生した場合に、
そのエラーNoを取得したいのですが、どのように書けばよいのでしょうか?
現時点では下のように書くところまでやりました。

except
on E: EDatabaseError do
begin
Result := False;
end;
end;



174 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:09:58 ]
>>173
いろいろ考えられるね。
・E.MessageにエラーNoが入ってるならそこから抽出する。
・E.ErrorNoみたいのがあるならそれを使う。
・SQLServer2000にGetLastDBError見たいな関数があるならそれを利用する。

175 名前:デフォルトの名無しさん mailto:sage [2006/10/19(木) 11:19:34 ]
>>173
BDE使ってるならEDBEngineErrorでcatchすれば
エラーの詳細が取れるけど。
どうやって接続してるの?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<190KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef