1 名前: ◆XcB18Bks.Y mailto:sage [2008/03/12(水) 21:09:39 ] Delphi(デルファイ)について、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を 勇気を持って書き込むスレッドです。 Delphi使いが優しくコメントを返しますが お礼はDelphiの布教と初心者の救済をお願いします。 <前スレ> くだすれDelphi(超初心者用)その45 pc11.2ch.net/test/read.cgi/tech/1198802907/ <過去スレ> DelWiki避難所(Delphi 関連の過去スレッド) delwiki.info/?Delphi%20%B4%D8%CF%A2%A4%CE%B2%E1%B5%EE%A5%B9%A5%EC%A5%C3%A5%C9
101 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:08:47 ] ミリ秒を時間とか分とか秒とか込みで文字列化する関数ないですか?
102 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 21:12:13 ] FormatDate
103 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:48:48 ] TPageControlの枠を消すにはどうしたらいいんでしょうか?
104 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:52:00 ] PageControl1.Style := tsButtons;
105 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:00:04 ] それだと無駄な余白が出来るから PageControl1.Visible := Falseにして 表示用にTabControl1配置してHeight := 20くらいにして その下にPanel配置してタブの切り替えのタイミングでで TabSheet.Parent := Panel1; TabSheet.Align := aliClient; と面倒なことをやると枠も余白も消せる。
106 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 00:57:42 ] StringGrid := [goRowSelect, goRangeSelect] として、 1〜3行目を選択後に2行目をクリックすると、選択行は2行目のみとなります これを選択範囲内をクリックした場合、新たに選択せず 選択範囲を維持するというふうにするにはどうすればいいでしょうか?
107 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:24:09 ] GetIndex('漢a字', 1) => 1 GetIndex('漢a字', 3) => 4 というような関数ありますか?
108 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:33:28 ] >>107 読解力のない俺はアフォなのか・・・
109 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:44:21 ] 俺もだ。すまん、アフォでごめん。
110 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:04:27 ] アフォな俺にはこれぐらいしか… function GetIndex(s: String; i: Integer): Integer; begin Result := Length(AnsiLeftStr(s, i - 1)) + 1; end;
111 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:52:30 ] 2バイトで考えた文字数目が1バイトで考えた時に何バイト字目になるかを返す関数ということでFA?
112 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:53:19 ] function GetIndex(Str:String; Index:Integer):Integer; begin if Str='漢a字' then begin if Index=1 then Result:=1 else Result:=4; end else Result:=0; end; 俺って天才かも!
113 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:21:06 ] こうか? function GetIndex( ws: WideString; index: Integer): Integer; begin Result:= Length(String(WideString(copy(ws, 1, index-1))))+1; end;
114 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 17:35:05 ] >>107 俺は読めたよ function GetIndex(test:string;num:integer):integer; begin if test = '漢a字' then begin if num = 1 then result := 1; if num = 3 then result := 4; end; end; 後は自分で工夫してくれ
115 名前:デフォルトの名無しさん [2008/03/26(水) 17:47:45 ] > 97様、98様 お返事ありがとうございました。試してみたいのですが、来週まで 時間がとれそうもないので、まずはお礼だけさせてください。 また、よろしくお願いします。
116 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:54:12 ] StringList遅すぎる… Capacity多めに設定したらそこそこ改善されたけどまだまだ遅い。 Clear, Add, Stringsの列挙くらいしかやらないんだけど代替ライブラリはないものか。 MemoryStreamでも使うか。
117 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:20:57 ] 遅いコード晒せ
118 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:26:48 ] MemoryStreamを引き合いに出している時点で明らかに使い方が間違っている
119 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:47:26 ] FastMM使ってなかったら、>>116 はメモリマネージャ交換した方がよさそうだな。
120 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:49:55 ] FastMM って3年前からだよ。それまでStringListって遅かったのか?
121 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:49:57 ] ほんとにClear,Add,Stringsだけしか使ってない?それで遅いって、100万件ぐらい データ突っ込んでのかな。
122 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 03:42:15 ] TMemoでしたって落ち?
123 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:18:10 ] 自分の無能さをライブラリのせいにするな
124 名前:デフォルトの名無しさん [2008/03/27(木) 09:03:40 ] 配列の宣言にpackedがついている場合を見かけますが、これ何か意味あるんですか?
125 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:07:08 ] メジャーになれなかった理由の一つがまさにこういった事。 比較的多用しそうな事がいまいちで滅多に使わなそうな事がすげー便利。
126 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:29:16 ] >>124 たとえば3バイトのメンバーを持つ構造体の配列とか?
127 名前:124 mailto:sage [2008/03/27(木) 09:36:45 ] >>126 type THoge = packed record A: array[0..2] of Byte; end; // 3バイトの要素を持つ構造体 THogeArray = array[0..9] of THoge; TPackedHogeArray = packed array[0..9] of THoge; begin WriteLn(SizeOf(THoge)); // 3 WriteLn(SizeOf(THogeArray)); // 30 WriteLn(SizeOf(TPackedHogeArray)); // 30 end; 違いが分からないんです。
128 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:46:15 ] 配列についているんじゃなくて、構造体についているのよ。 packedをつけないと、アライメントされるかどうかはコンパイルオプションによる。 常にpackedつけておけばOK。 >>127 packedを外してコンパイルしてみ。
129 名前:124 mailto:sage [2008/03/27(木) 09:50:48 ] >>128 > packedを外してコンパイルしてみ。 TPackedHogeArrayのpackedをですか?
130 名前:124 mailto:sage [2008/03/27(木) 09:54:58 ] THogeとTPackedHogeArrayのpackedを外してみましたが、 出力は変わりませんでした。 ちなみにコンパイラオプションは{$A8}です。
131 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 09:55:01 ] >>129 何が起こるか想像がつかないなら、やってみる価値はある。
132 名前:131 mailto:sage [2008/03/27(木) 10:57:08 ] ごめん、勘違いしてた。 混ざらないと駄目みたい。 そうなると、packed配列は意味ありませんね。 procedure TForm1.Button1Click(Sender: TObject); type THoge1 = record A: Byte; B: Byte; C: Byte; end; THoge2 = record A: Byte; B: Byte; C: Byte; D: Word; end; begin Caption := Format('%d, %d', [SizeOf(THoge1), SizeOf(THoge2)]); end;
133 名前:124 mailto:sage [2008/03/27(木) 11:16:28 ] ありがとうございます。 構造体のメンバのアラインメントは他の言語にもあるのでわかるのですが、配列のpackedは謎です。 VCLのソースの中でも配列の宣言にpackedがついていたりいなかったりで、 何か使い分けがされているような気もするのですが、挙動の違いが分からないので釈然としません。 とりあえずつけておけば問題はなさそうですが・・・
134 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 11:52:13 ] >>133 Delphiでしか使わないなら気にしない。
135 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 15:14:18 ] Vista対応ってしとく必要あんのかな
136 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 16:52:40 ] TTabControlで質問です。 タブを選択した時に、その番号に関連付けられてるオブジェクトが 条件を満たさないときはそのタブを選択させないようにするにはどうすればいいんでしょうか? OnChangingイベントでいけるかと思ったんですが これから選択しようとしているタブ番号の取得方法がわかりません。 クリックの時はマウス座標を取得する事でどうにか出来ない事もないんですが、 キーボードの時に詰まってしまいます。
137 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 20:51:54 ] Delphiクイックリファレンスによると配列のpackedは標準Pascalとの互換性のためで Delphiでは何の意味もないそうです
138 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:50:08 ] StrToIntをAPIで書くとしたらどうなるんですかね? SysUtilsはあまり使いたくない性分です・・・
139 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:52:42 ] どう考えても意味不明だろ、それ。
140 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:57:55 ] >>138 APIは知らんけどSystem.Val しかしこのスレ無内容な一行レスばっかりだな。彼らは一体何がしたいのか。
141 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 22:07:38 ] >>140 こんな関数があるとは・・・ 勉強になります ありがとうございます
142 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 22:12:26 ] 関数ではなくて手続きでしたね、すみません
143 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 23:06:08 ] いやだってSysUtilsは使いたくないって意味不明じゃん。ValもStrToIntも変わらないでしょ。
144 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2008/03/28(金) 02:16:29 ] >>107 CharToByteIndex なんだって。
145 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 05:27:30 ] 1文字目は1バイト目から始まり、 3文字目は4バイト目から始まるって意味か。 >>138 こんなんでどうだ?(未チェック) 16進数が必要なら自分でやって。 function StrToInt(const Str: string): Integer; var I: Integer; P: PChar; Minus: Boolean; begin Result := 0; Minus := False; P := PChar(Str); if P^ in ['+', '-'] then begin Minus := P^ = '-'; Inc(P); end; while P^ <> #0 do begin if not (P^ in ['0'..'9']) then raise Exception.Create('変換エラー'); // EConvertみたいなのあったかも。 Result := Result * 10 + Ord(P^) - Ord('0'); Inc(P); end; if Minus then Result := Result * -1; end;
146 名前:デフォルトの名無しさん [2008/03/28(金) 06:05:11 ] Result := Result * 10 + Ord(P^) - Ord('0'); ここおかしくない?
147 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 06:05:56 ] やべ、スレあげちまった。
148 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 07:09:17 ] 123の場合、 Result := 0 * 10 + '1' - '0' → 1 Result := 1 * 10 + '2' - '0' → 12 Result := 12 * 10 + '3' - '0' → 123 であってると思うけど。
149 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 07:43:32 ] ああ、あってるね。ごめんなさい。
150 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 09:51:44 ] +,-,#0の一文字だけのとき、0になるわ。
151 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 10:01:22 ] delwiki.info/?%A5%B3%A1%BC%A5%C9%C1%D2%B8%CB%2F%BF%F4%C3%CD%A4%E4CSV%A4%CE%BC%E8%A4%EA%BD%D0%A4%B7 この GetInteger10を呼び出してる GetIntegerみたいに好みの仕様を追加したらいいんじゃないの?
152 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 15:17:15 ] TreeViewで特定の項目だけVisible:=Falseにできますか? または代わりの方法があれば教えてください。
153 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 17:15:01 ] Canvasにウィンドウ右上の_ □ ×ボタンをレンダリングする方法ないですか? ビットマップで用意するとテーマの変更に追従できないので。 >>152 たぶん無理。Add/Deleteするしか。
154 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 00:26:03 ] >>153 WinAPIのDrawFrameControl
155 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:18:18 ] DrawFrameControlってテーマに対応してるの?
156 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:37:32 ] Win32APIだし、内部的にそれらのAPI使ってWindowsはウィンドウ描画してるんじゃ? てか、それぐらい自分で試せるだろ。
157 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:39:03 ] いや、テーマAPI別にあるから対応してねぇかも。
158 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:45:44 ] Win32のスレで聞きな。そっちの方が知ってる人多いと思う。
159 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 13:26:10 ] TRegExprでtr演算子の置換をするにはどうすればいいですか? たとえば「tr/abc/ABC/」見たいなのです 英語とか良く分からないしググッても出ないし・・・ よろしくお願いします
160 名前:159 mailto:sage [2008/03/29(土) 14:48:57 ] 今頃ですがTRegExprでなくてもDLLを使わないようなものでなければ大丈夫です
161 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:53:24 ] TRegExprの使い方 delwiki.info/?%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8%2FTRegExpr PCRE使ったの cc.codegear.com/Item/25062
162 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 17:47:55 ] 鬼車ベースのライブラリってないの?
163 名前:159 mailto:sage [2008/03/29(土) 17:54:41 ] >>161 > TRegExprの使い方 これを読んでみて分かりませんでした・・・ 何かサンプルをいただけないでしょうか
164 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 18:08:56 ] ぢゃ日本製使え ttp://homepage1.nifty.com/bmonkey/delphi/delphi.html
165 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 02:33:50 ] DirectoryListBox で、今選んでいるフォルダの深さが何階層目かを知る方法ってありますか?
166 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 02:40:05 ] それ16ビットUIの名残り。使わない方がいいよ。
167 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 03:00:55 ] >>166 そうですか、今後なるべく使わない様にします。 じゃあ、変数に入ってるパスが何階層目かを知る方法ってありますか?
168 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 04:05:07 ] デリミタの数を数えるとか
169 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2008/03/30(日) 04:23:47 ] delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/WordDecompose/WordDecompose.pas.txt 俺も自作のを使ってしまうなあ。
170 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 06:13:30 ] StringReplaceで\を\_にでも変換して、 長さの差を取れば\の数は分かるんじゃないのか?
171 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 06:19:44 ] \の数だけだとUNCパスで誤動作するんじゃね?
172 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 09:42:07 ] はぁ・・・Del7買ってから出来たものはボタンクリックして画像表示 それから2Dのスクロールと3Dモデルの回転のみ・・・ 変数宣言めんどくせー コンパイラ時に自動作成して後で修正させるようにしてくれりゃいいのに
173 名前:167 mailto:sage [2008/03/30(日) 10:01:31 ] >>168-171 やはり文字系で処理するしかないですか なんかディレクトリの命令であるかなと思ったんで すいませんでした、なんとかやってみます ありがとうございましたw
174 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 10:03:40 ] ExtractFileDriveしてExcludeTrailingPathDelimiterしつつExtractFilePathできる回数を数える
175 名前:167 mailto:sage [2008/03/30(日) 11:19:06 ] >>174 あっ、そういう方法でも出来るんですね なんか出来そうな感じがしてきました 試しにやってみます、ありがとうございましたw
176 名前:|Д゚彡 ◆A6VzDeLphI mailto:sage [2008/03/30(日) 12:03:39 ] 作ってます。 delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/FileNameUnit/FileNameUnit.pas.txt function PathLevel(Path: String): Integer; procedure testPathLevel; ご参考ください。 こういうのって、つくづく、実装よりも テストコードが大事って思う。
177 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 12:06:29 ] >172 そういうのが苦手な人にはDelphiは向かないのかも。Delphi2007ならリファクタリングで変数宣言を 追加する機能もあるけど、ちょっと違うな。昔のVBなら変数宣言不要なモード(Option)もあった気が。
178 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 12:55:00 ] >>177 というかコンパイラって手抜きで進歩無さ杉 変数宣言なんか同じソース上に表示させる意味もなく、プロパティのように別窓か別ファイルでソート可能な表形式で管理・表示でいい
179 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 13:11:59 ] BASICでもやってろ
180 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 13:54:06 ] そもそもプログラミングに向いてない。
181 名前:167 mailto:sage [2008/03/30(日) 14:15:03 ] >>176 WordDecompose.pas 頂きました 色々参考にさせていただきます、ありがとうございましたw
182 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 16:20:24 ] ありとあらゆる変数をグローバル変数で宣言しておいたらどうだろう?
183 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 18:47:34 ] >>178 IDEの恩恵しか受けたことないとこういう風に育つのか
184 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 19:10:06 ] いや、何となくわかる。変数宣言のUI。でもソース上に書くってのに 慣れてるしプログラム書いてるって感じするし、よくよく考えてみると GUI にするのってローカルだとかナンだとか面倒そうじゃん
185 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 20:35:28 ] 妄想するだけでで宣言文を書けたらいいのにね。 それは冗談として、アドインで作れないの?
186 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 00:25:08 ] GUIで表示や追加くらいなら作れると思うが、 そんなので喜ぶのは初心者だけだし、 そういうのを作れるレベルの人は逆に生産性下がって不要なので 結果として誰も作らないってことになってるんじゃないかと
187 名前:デフォルトの名無しさん [2008/03/31(月) 00:39:57 ] SpeedButtonみたいなのがいくつか5個くらい並んでて、一つは常にへっこんでて、一つを押すと他の全部が上がるってタイプのボタンはどうやってるんですか?
188 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 00:48:22 ] SpeedButtonをグループ化するんだ
189 名前:デフォルトの名無しさん [2008/03/31(月) 00:54:37 ] できました。 どうもありがとう!
190 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 10:50:14 ] データベースでBlobに入っているバイナリファイルを少しずつダウンロード したいのですが、良い方法はないでしょうか? 現在TBlobStream.CreateでそのStreamから少しずつ読み込んでいるのですが、 Createメソッドを実行した時点ですべてのデータを読み込んでいるようです。 要は少しずつReadしてプログレスバーにその状況を表示したいのです。 上の方法だとCreateを呼んだところでプログラムが一次停止したようになってしまいます。
191 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 12:19:44 ] それについて深く考えたことない事を始めに断っておくけど、 昔調べた記憶と今、ちょっとソース見た感じだと、少なくとも新しい独自のBlobStreamクラスと それを返すようにADOならTCustomADODataSet,dbExpressならTCustomSQLDataSetの CreateBlobStreamメソッドをオーバーライドして独自BlobStreamを返すようにしないと 厳しそうだな。
192 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 12:22:49 ] まぁ、読み込むBlobの最大サイズは設定できるようだから、それを設定して、 一次停止したようになるのを避けることはできる。根本的な解決ではないが。 それが嫌なら上記の方法以外ぱっと思いつかない。
193 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 17:29:09 ] d6perなんですがdialog.pasがC:\Program Files\Borland\Delphi6\Source\Vclに存在しません・・・ ちょっと修正したい箇所があるのですが誰かうpしていただけないでしょうか?
194 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 19:37:21 ] そのためのプロ版だ。プロ買え。
195 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:49:51 ] DBGrid1のOnDrawColumnCellで、DBGrid1の上にUpDownを描くやり方で、UpDownでフィールドの値を変えることにチャレンジしています。 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin // DBGridをFColorDBGrid1とFColorDBGrid2の縞々にする。 if not (gdSelected in State) then begin if Table1.RecNo mod 2=0 then begin DBGrid1.Canvas.Brush.Color := FColorDBGrid1; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end else begin DBGrid1.Canvas.Brush.Color := FColorDBGrid2; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end;
196 名前:つづき@ mailto:sage [2008/03/31(月) 20:50:48 ] // UpDownの描画 fView := False; if gdSelected in State then with DBGrid1 do if SelectedField is TIntegerField then with TIntegerField(SelectedField) do begin if Table1.Active then updownDBGridInt.Position := Table1.FieldByName('Int').AsInteger; fView := true; end; updownDBGridInt.Visible := fView; if updownDBGridInt.Visible then if not CompareMem(@oldRect, @Rect, Sizeof(Rect)) then with Rect do begin updownDBGridInt.Top := Top; updownDBGridInt.Left := Left; updownDBGridInt.Height := Bottom - Top; end; end;
197 名前:つづきA mailto:sage [2008/03/31(月) 20:51:36 ] // updownDBGridIntのOnChangingEx procedure TForm1.updownDBGridIntChangingEx(Sender: TObject; var AllowChange: Boolean; NewValue: Smallint; Direction: TUpDownDirection); begin if (Table1.Active=true) and (0<Table1.RecordCount) then begin if not fView then exit; AllowChange := DBGrid1.SelectedField.CanModify; if AllowChange then begin with DBGrid1 do if SelectedField is TIntegerField then with TIntegerField(SelectedField) do begin //Table1.DisableControls; Table1.Edit; Table1.FieldByName('Int').AsInteger := updownDBGridInt.Position; Table1.Post; DBGrid1.Refresh; //Table1.EnableControls; end; end; end; end; こうすると、Tableにフィルターをかけてないときは、値の増減ができ、うまくいくのですが、フィルターをかけた場合、UpDownを増減すると、カレントレコードが先頭にいったり、最後にいったり(updownDBGridIntもそれにあわせて移動します)増減できなくなってしまいます。 一般的な話でなくて申し訳ないですが、原因のわかる方いらっしゃいませんか?
198 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 13:03:38 ] writelnで出力した文字列を 一段上に戻って再度上書きして 進行状況を表示したいんですがどうやればいいですか?
199 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 13:07:49 ] 戻るくらいなら最初から改行するなよ
200 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [2008/04/01(火) 13:44:59 ] Writelnの代わりにWriteで書いてバックスペース(#8)?
201 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 16:35:05 ] dn.codegear.com/article/33747 を参考に自分のソフトをVistaに対応させようと思ったのですが、 ShowModalのところで詰まってしまいました FormのプロパティにPopupParentが存在しないのです どうすればいいのでしょうか?