form1 의 dbgrid의 특정내용을 form2에 나타나려고 한다면
table을 같은걸로(하나로) 사용하세요.
자세하게 설명하면
form1 의 버튼클릭에서는 form2를 호출하시고
form2 의 formcreate나 버튼이벤트에서 아래와 같이 ...
edit1.text := form1.table1.fieldbyname('code').asstring ;
uses에는 각각 서로의 폼을 연결만 시켜주면 됩니다.
같은걸로 사용못한다면 findkey를 사용하시는데
datasource의 ondatachange 이벤트에서 에러가 난다면
(에러가 나지 않더라도 ondatachange는 권장하고 싶지 않네요. 왜냐하면 다른폼을
띄우지 않으려고 해도 그 이벤트는 계속 발생을 하니까요)
버튼클릭시에만 key값을 저장해서 다른폼을 띄울때 사용하십시요.
이런방법의 findkey로도 되지않고 동일table, 동일레코드라면 Bookmark를 써 보심이...
var AA : Tbookmark ; // 어디선가 전역변수로 선언 하시고요
버튼이벤트에서
begin
AA := table1.GetBookmark ;
end ;
다른폼의 create이벤트에서
begin
table2.Active := True ;
table2.GotoBookmark(AA) ;
table2.FreeBookmark(AA) ;
end ;
이상있으시면 답변남겨주세요.
성공하시길 ....
류동기 wrote:
> 안녕하세요 델파이 초보입니다.
> DBGride안의 어느 한 레코드의 내용을 특정키를 눌렀을때 다른 폼에 나타내려합니다.
> 그런데 다른 폼을 생성시키면 DBGride의 커서위치가 아닌 처음레코드를
> 읽어오는군요.
> temp 테이블을 사용했구요 첫번째 폼에서 변수를 사용하여 DBGride의 현재키를
> 저장(datasource의 ondatachange 이벤트에서)하고
> 그 변수를 이용하여 두번째폼에서 findkey로 데이타를 찾아서 처리했는데
> 이상하네요.
> 고수님들의 조언을 필요로 합니다.
> 많은 도움을 주시면 고맙겠습니다.