Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
마우스로 multiselect도 하면서 Edit도 할려면?
스트링그리드의 OPtions에서 goEditing을 True로 만들면
마우스로 multiselect가 안돼고요. False로 놓으면 multiselect는
되지만 Edit가 안돼는데 어떻게하면 multiselect도 되고 DbClick하면
Edit도 되는지 알려주세요.
1
COMMENTS
최석기
•
2000.09.06 03:18
안녕하세요.
델파이세상(http://www.freechal.com/delphiworld)에 최석기입니다..
님 질문을 보구 함 잼있을꺼 같아서 만들어 봤습니다..
그냥 허접하게 만들어서 버그가 있을지도 모르겠네요..
그냥 참고만 하세요..
소스 다 올립니다..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
Capturing : bool;
Captured : bool;
StartPlace : TPoint;
EndPlace : TPoint;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function MakeRect(Pt1 : TPoint;
Pt2 : TPoint) : TRect;
begin
if pt1.x < pt2.x then begin
Result.Left := pt1.x;
Result.Right := pt2.x;
end else begin
Result.Left := pt2.x;
Result.Right := pt1.x;
end;
if pt1.y < pt2.y then begin
Result.Top := pt1.y;
Result.Bottom := pt2.y;
end else begin
Result.Top := pt2.y;
Result.Bottom := pt1.y;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i, j: Integer;
begin
// Column의 title을 만든다
for i := 1 to StringGrid1.ColCount - 1 do
StringGrid1.Cells[i, 0] := Char(Ord('A')+i-1);
// Row의 title을 만든다
for i := 1 to StringGrid1.RowCount - 1 do
StringGrid1.Cells[0, i] := IntToStr(i);;
// 임의의 자료를 만들어서 각 cell에 입력합니다
for i := 1 to StringGrid1.ColCount - 1 do
for j := 1 to StringGrid1.RowCount - 1 do
StringGrid1.Cells[i, j] := Format('%.0n', [i * j * 10000.0]);
//Editing는 가능, MultiSelect는 불가능 옵션
StringGrid1.Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goEditing];
end;
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Captured then
DrawFocusRect(StringGrid1.Canvas.Handle,
MakeRect(StartPlace,
EndPlace));
StartPlace.x := X;
StartPlace.y := Y;
EndPlace.x := X;
EndPlace.y := Y;
DrawFocusRect(StringGrid1.Canvas.Handle,
MakeRect(StartPlace,
EndPlace));
Capturing := true;
Captured := true;
end;
procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if Capturing then begin
DrawFocusRect(StringGrid1.Canvas.Handle,
MakeRect(StartPlace,
EndPlace));
EndPlace.x := X;
EndPlace.y := Y;
DrawFocusRect(StringGrid1.Canvas.Handle,
MakeRect(StartPlace,
EndPlace));
end;
end;
procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
SelectedRectangle: TGridRect;
CoordTopLeft, CoordBottomRight: TGridCoord;
ACol, ARow: Longint;
begin
Capturing := false;
CoordTopLeft := StringGrid1.MouseCoord(StartPlace.x,StartPlace.y);
CoordBottomRight := StringGrid1.MouseCoord(EndPlace.x,EndPlace.y);
with StringGrid1 do begin
SelectedRectangle.TopLeft := CoordTopLeft;
SelectedRectangle.BottomRight := CoordBottomRight;
end;
StringGrid1.Selection:= SelectedRectangle;
end;
end.
호야 wrote:
> 스트링그리드의 OPtions에서 goEditing을 True로 만들면
> 마우스로 multiselect가 안돼고요. False로 놓으면 multiselect는
> 되지만 Edit가 안돼는데 어떻게하면 multiselect도 되고 DbClick하면
> Edit도 되는지 알려주세요.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
meteus
•
2000.09.06 07:33
2
COMMENTS
/
0
LIKES
그럼 델파이는 static 변수 선언이 없단 말인가요?
하얀까마귀
•
2000.09.06 19:04
안녕하세요 하얀까마귀 입니다.. 아마 static를 찾으시는거 보니 C언어를 공부하신 분인것 같던데.. ...
최용일
•
2000.09.06 07:39
안녕하세요. 최용일입니다. 그런 변수는 없습니다만 그러한 방식으로 작동을 하게 지역변수를 선언해서 ...
NOVICE
2000.09.06 07:03
0
COMMENTS
/
0
LIKES
chart에 관한 질문이 있는데요..(T.T)
강인규
•
2000.09.06 06:24
6
COMMENTS
/
0
LIKES
인터베이스 설치 후 에러 관련조언 부탁드립니다.
강인규
•
2000.09.06 07:20
금욜
•
2001.01.03 08:11
허춘
•
2000.09.06 08:59
강인규
•
2000.09.06 09:14
허춘
•
2000.09.06 11:58
강인규
•
2000.09.06 12:13
won
•
2000.09.06 06:23
2
COMMENTS
/
0
LIKES
Query,Table이 다른컴에서 열렸는지 검사하는 방법..?
허춘
•
2000.09.06 09:01
won wrote: > > 테이블수정이아니고, 인덱스,gotokey로 검색하는 겁니다. > 자꾸, key violation 에러...
parkisu
•
2000.09.06 08:40
won wrote: > > 테이블수정이아니고, 인덱스,gotokey로 검색하는 겁니다. > 자꾸, key violation 에러...
red
•
2000.09.06 05:54
1
COMMENTS
/
0
LIKES
저 스트링 크리드 관계된 소스인대요 소스점 보고 자세히 설명좀 해주세요 넘 어려워서요
최용일
•
2000.09.06 07:28
허걱~ 소스에 주석이 다 달아져 있는데요... 이 이상 뭘 더 설명을 해달라는거죠? 델파이 초급책을 보시...
heimdal
2000.09.06 05:39
0
COMMENTS
/
0
LIKES
챠트에서 챠트시작값을 1부터하기
곽씨
•
2000.09.06 04:52
2
COMMENTS
/
0
LIKES
messageDlg의 사용에 관하여.
이상우
•
2000.09.06 06:21
곽씨 wrote: > > messageDlg에서 버튼은 yes하구 no를 쓸 예정이거든여.... > > 근데 실행해서 ...
박용철
•
2000.09.06 07:01
procedure TForm1.Button1Click(Sender: TObject); begin case MessageDlg('test', mtConfirmation, [m...
초생
•
2000.09.06 04:53
2
COMMENTS
/
0
LIKES
DBGrid에서 특정데이타 열을......
초생
•
2000.09.06 07:13
박용철 wrote: > DBGrid의 Column의 Color 속성을 이용하세요. > DBGrid를 Double Click하면 Columns창이...
최용일
•
2000.09.06 07:25
안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)최용일입니다. 디비그리드의 OnDrawDataC...
왕초보(ljm)
•
2000.09.06 04:19
1
COMMENTS
/
0
LIKES
실행시에 메모리 에러가 나옵니다.
최용일
•
2000.09.06 07:34
안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다. 메모리 에러라는게 메...
이호철
2000.09.06 03:57
0
COMMENTS
/
0
LIKES
네트웍으로 연결해서 다른 컴퓨터의 폴더 및 파일을 보기
조헌철
2000.09.06 04:34
0
COMMENTS
/
0
LIKES
WebBrowser에 string을 넣는 방법?
김지엽
•
2000.09.06 03:44
1
COMMENTS
/
0
LIKES
워드랩 관련
최용일
•
2000.09.06 08:01
안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)의 최용일입니다. 에스케이프문자가 아니...
사발우성
•
2000.09.06 03:04
1
COMMENTS
/
0
LIKES
동적으로 생성된 데이터 소스의데이터 셋.
최용일
•
2000.09.06 08:05
안녕하세요. 최용일입니다. 속성창에서 넣어주는 것처럼 그대로 대입하시면 됩니다. ds.DataSet := q...
윤종구
2000.09.06 03:04
0
COMMENTS
/
0
LIKES
초초보
•
2000.09.06 02:49
6
COMMENTS
/
0
LIKES
SQL을 쿼리문을 이용해서 로그인 프로그램을 만들려구 하는데 좀 도와주세요
최석기
•
2000.09.06 02:59
초초보
•
2000.09.06 08:06
최석기
•
2000.09.06 08:06
초초보
•
2000.09.06 08:07
박용철
•
2000.09.06 08:07
???
•
2000.09.06 02:58
호야
•
2000.09.06 02:31
1
COMMENTS
/
0
LIKES
마우스로 multiselect도 하면서 Edit도 할려면?
스트링그리드의 OPtions에서 goEditing을 True로 만들면 마우스로 multiselect가 안돼고요. False로 놓으면 multiselect는 되지만 Edit가 안돼는데 어떻게하면 multiselect도 되고 DbClick하면 Edit도 되는지 알려주세요.
최석기
•
2000.09.06 03:18
안녕하세요. 델파이세상(http://www.freechal.com/delphiworld)에 최석기입니다.. 님 질문을 보구 함 ...
저좀.. 헤헤
•
2000.09.06 02:15
1
COMMENTS
/
0
LIKES
한글파일의 내용을 읽어오구 싶은데요....
모승열
•
2000.09.06 03:54
저좀.. 헤헤 wrote: > 안녕하십니까.... 제가 처음 델파이를 접하면서, > 질문을 자주 올리게 됩니다......
최영식
•
2000.09.06 01:58
1
COMMENTS
/
0
LIKES
외부프로그램을 내프로그램윈도우에 넣기
최승선
•
2000.09.07 03:30
익스플로러를 여는 소스로 고쳐 보았습니다. procedure TForm1.Button1Click(Sender: TObject); var ...
인어공주
•
2000.09.06 01:52
4
COMMENTS
/
0
LIKES
클릭하지 않고 엔터를 이용할 수 없나요?
정진우
•
2000.09.06 09:00
저도 잘 모르는데 키워드 값을 이용하면 될꺼에요... enter키의 키워드 값을 이용하면 되지않을까요... ...
정진우
•
2000.09.06 09:09
그리고 입력 포커스를 갖는 컴포넌트는 onenter이벤트가 있네요... 한번 봐봐요.... 그럼 이만...
인어공주
•
2000.09.06 19:42
onenter 이벤트는 엔터키가 입력되면 자동으로 onenter 부분을 수행하지 않나요? 저도 사용을 해봤는데.. ...
박용철
•
2000.09.06 20:06
검색버튼의 Property중 Default를 True로 하세요. 그럼, 이만. 인어공주 wrote: > onenter 이벤트는 ...
신성진
2000.09.06 01:29
0
COMMENTS
/
0
LIKES
인스톤쉴드에 오라클실행시 최소파일 넣기
호야
2000/09/06 02:31
Views
522
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
델파이세상(http://www.freechal.com/delphiworld)에 최석기입니다..
님 질문을 보구 함 잼있을꺼 같아서 만들어 봤습니다..
그냥 허접하게 만들어서 버그가 있을지도 모르겠네요..
그냥 참고만 하세요..
소스 다 올립니다..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
Capturing : bool;
Captured : bool;
StartPlace : TPoint;
EndPlace : TPoint;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function MakeRect(Pt1 : TPoint;
Pt2 : TPoint) : TRect;
begin
if pt1.x < pt2.x then begin
Result.Left := pt1.x;
Result.Right := pt2.x;
end else begin
Result.Left := pt2.x;
Result.Right := pt1.x;
end;
if pt1.y < pt2.y then begin
Result.Top := pt1.y;
Result.Bottom := pt2.y;
end else begin
Result.Top := pt2.y;
Result.Bottom := pt1.y;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i, j: Integer;
begin
// Column의 title을 만든다
for i := 1 to StringGrid1.ColCount - 1 do
StringGrid1.Cells[i, 0] := Char(Ord('A')+i-1);
// Row의 title을 만든다
for i := 1 to StringGrid1.RowCount - 1 do
StringGrid1.Cells[0, i] := IntToStr(i);;
// 임의의 자료를 만들어서 각 cell에 입력합니다
for i := 1 to StringGrid1.ColCount - 1 do
for j := 1 to StringGrid1.RowCount - 1 do
StringGrid1.Cells[i, j] := Format('%.0n', [i * j * 10000.0]);
//Editing는 가능, MultiSelect는 불가능 옵션
StringGrid1.Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goEditing];
end;
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Captured then
DrawFocusRect(StringGrid1.Canvas.Handle,
MakeRect(StartPlace,
EndPlace));
StartPlace.x := X;
StartPlace.y := Y;
EndPlace.x := X;
EndPlace.y := Y;
DrawFocusRect(StringGrid1.Canvas.Handle,
MakeRect(StartPlace,
EndPlace));
Capturing := true;
Captured := true;
end;
procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if Capturing then begin
DrawFocusRect(StringGrid1.Canvas.Handle,
MakeRect(StartPlace,
EndPlace));
EndPlace.x := X;
EndPlace.y := Y;
DrawFocusRect(StringGrid1.Canvas.Handle,
MakeRect(StartPlace,
EndPlace));
end;
end;
procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
SelectedRectangle: TGridRect;
CoordTopLeft, CoordBottomRight: TGridCoord;
ACol, ARow: Longint;
begin
Capturing := false;
CoordTopLeft := StringGrid1.MouseCoord(StartPlace.x,StartPlace.y);
CoordBottomRight := StringGrid1.MouseCoord(EndPlace.x,EndPlace.y);
with StringGrid1 do begin
SelectedRectangle.TopLeft := CoordTopLeft;
SelectedRectangle.BottomRight := CoordBottomRight;
end;
StringGrid1.Selection:= SelectedRectangle;
end;
end.
호야 wrote:
> 스트링그리드의 OPtions에서 goEditing을 True로 만들면
> 마우스로 multiselect가 안돼고요. False로 놓으면 multiselect는
> 되지만 Edit가 안돼는데 어떻게하면 multiselect도 되고 DbClick하면
> Edit도 되는지 알려주세요.