掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
StringGridで複数のセルを同時に動かしたい (ID:47199)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
教えて頂きたいことがあります。 クリックしてセルを選択した時に一行の複数のセルを同時に動かしたいのですが いろいろなやり方を試してみた結果以下のような方法で対応できることは分かりましたが この方法ではセルを編集モードにしていますので(文字入力は制限) 文字を入力する操作を行うと一旦セルが窪んだ状態になります。(文字は入りません) これは好ましくないのとそもそも編集モードは本来不要(文字入力は不可)なのですが 機能を実現するために仕方なく利用しているもので 出来れば編集モード無しで一行の複数のセルを同時に動かす方法があればと思っています。 編集モード無しでも一応複数のセルを動かすことは出来ますが 少し時間がずれて動くので使い物にはなりません。 何か方法がありましたらよろしくお願いします。 尚、StringGridはフォームに配置しまして 以下のようなソース(抜粋)で動作を確認しています。 (環境はOS:Win8.1 / Delphi6) procedure TForm1.FormShow(Sender: TObject); begin with StringGrid1 do begin FixedCols := 1 ; FixedRows := 1 ; ColCount := 2 ; RowCount := 10 ; Options := Options + [goEditing]; // 注 編集モード 〜略〜 end; end; procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var SRect: TGridRect; begin SRect := TStringGrid(sender).Selection ; if (Acol>=1) and (ARow=SRect.Top) then begin // 複数セル with TStringGrid(sender).Canvas do begin Brush.Color := clAqua ; Brush.Style := bsSolid ; FillRect(Rect); Font.Color := clBlack ; TextOut(Rect.Left + 2, Rect.Top + 2, TStringGrid(sender).Cells[ACol, ARow]); end; end; end; procedure TForm1.StringGrid1Click(Sender: TObject); begin TStringGrid(sender).Refresh; // 注 end; // 以下のキー処理でグリッドを編集できないように制限 procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin Key := #0; end; procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key=VK_UP) or (Key=VK_DOWN) or (Key=VK_RETURN) or (Key=VK_PRIOR) or (Key=VK_NEXT) or (Key=VK_HOME) or (Key=VK_END) then exit; Key := 0; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.