Q&A

  • 독립버튼 사용법 좀 도와주세요
독립버튼하나로 button1~32번까지 caption을 모두 'off'로 채우는 프로그램
임다 그런데 안됨니다.


onclick event로 다음과 같은 코드를 button1~button32까지 지정했슴다.

if button(sender).caption='OFF' then
tbutton(sender).caption:='ON'
else
tbutton(sender).caption:='OFF';

그리고 34번 독립버튼을 누르면 button1~32 까지 모두 'OFF'가 되게끔
다시 이렇게 프로그램을 했슴다.

procedure TForm1.Button34Click(Sender: TObject);
var
i:integer;

begin
for i:=1 to 32 do
begin
button[i]:=(findcomponent('tbutton'+inttostr(i))as tbutton);
button[i].caption:='OFF';
end;

end;

그런데 안됨다.  헉...헉..헉...
하나도 안바뀜다.





3  COMMENTS
  • Profile
    공성환 2002.02.05 22:06
    procedure Proc_Button(vp_Comp: TComponent);

    procedure TForm1.Proc_Button(vp_Comp: TComponent);
    var
      vv_i: Integer;
    begin
      with TWinControl(vp_Comp) do
      begin
        for vv_i := 0 to Controlcount - 1 do
        begin
          if (Controls[vv_i] is TButton) then
            TButton(Controls[vv_i]).Caption := 'off';
        end;
      end;
    end;

    이러면 되는건지...

  • Profile
    이상협 2002.02.05 22:50
    이게 뭔소리에여
    누구아는사람 해석좀 부탁드리께여
    TWinControl ? ,  controls[vv_i] ? ,
    왕초보는 이런거 잘 몰라여




  • Profile
    최용일 2002.02.05 23:20
    안녕하세요. 최용일입니다.

    TWinControl(...)한 것은 형변환한거네요... 님께서도 많이 쓰신 코드인데...

    if tbutton(sender).caption='OFF' then
    이건 sender를 TButton으로 형변환한거구요...

    (findcomponent('tbutton'+inttostr(i))as tbutton);

    위에서의 as연산자와도 같은 용도입니다.

    findcomponent('Button'+inttostr(I)) as TButton;

    =

    TButton( FindComponent( 'Button'+ IntToStr(I) ) )

    둘다 똑같은 코드입니다... as연산자를 쓰는것보다는 밑에것처럼 직접 형변환하는 것이 속도면에서 조금 빠릅니다.

    34번 버튼클릭이벤트에서 FindComponent로 컴포넌트 찾는 코드가 잘못되었네요...

    procedure TForm1.Button34Click(Sender: TObject);
    var
        I: Integer;
    begin
        for I: =1 to 32 do
        begin
            Button[I]:= TButton( FindComponent('Button' + IntToStr(I)) );
            Button[I].Caption:='OFF';
        end;
    end;

    FindComponent로 컴포넌트를 찾을때는 컴포넌트의 Name속성을 검색해서 찾습니다. 그러므로 'Button'앞에 있는 'T'자를 빼셔야겠죠...

    폼이나 판넬과 같은 컨테이너클래스들 안에다 컨트롤들을 생성하면 그 컨트롤들은 Controls란 배열속성에 저장이 됩니다. 그러므로 컨트롤들을 찾을 때에는 이 속성을 이용하셔도 됩니다...

    ^^ 항상 즐코하세요...

    • 문소희
    • 2002.02.06 01:13
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 권희수
      2002.02.06 01:34
      소켓서버가 스레드로 동작한다면 위와 같은 현상이 나올수있다고 생각되네여. 스레드는 1CPU에서는 그...
    • 김진선
    • 2002.02.06 00:48
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.02.06 01:40
      단지 에러메세지 가지고는 머라고 말을 못하겠네요 에러나는 문장을 올려주세요 그럼 즐코하세요
    • major
      2002.02.06 02:29
      안녕하세여.. 제가 아직 초보라서 정확히는 모르겠는 데 아마 값에 다 널 값을 넣으시려고 하시는 것 ...
    • 김진선
      2002.02.09 00:10
      혹시해서 널갑에 공백을 줘봤는데도 마찬가지입니다. 소스라할것도 없이 뭐 대략 이렇습니다. with query...
    • 최용일
      2002.02.06 03:53
      안녕하세요. 최용일입니다. 이경문님이 답변하신것에 추가로... 코딩은 VB예제 그대로 델파이로 컨버팅...
    • 이경문
      2002.02.06 03:31
      Project - Import Library - Install ActiveX Tab에 관련 com 이 컴포넌트로 등록됩니다.
    • 박성환
    • 2002.02.06 00:39
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.02.06 00:42
      우선 Quick Rep의 DataSet이 연결되었나 확인하시기 바랍니다. 즐코하세요
    • 박성환
      2002.02.06 00:58
      답변해 주셔서 감사함니다... 그런데요 연결되어 있구여  화면상에는 이상이 전혀 없는거구여...
    • 장명선
      2002.02.06 01:38
      그럼 Query나 Table를 오픈한 상태에서 Quick Report를 미리보기 해보세요 거기서두 안나오면 이상이 있는...
    • major
      2002.02.06 02:32
      안녕하세여.. 그러시면 이벤트를 확인 하시는 편이 빠를것 같네여.. 아마 에프터 프린터 이벤트 쪽을 주...
    • *^^*
      2002.02.06 21:08
         str := 'select max(grcode) as Maxval from T_Goods where levelA=';    str ...
    • 성더기
      2002.02.06 00:50
      해당메세지에 대한 에러가 맞는 지는 모르겠습니다만 AsString+'and labelB=' 이런식으로 쓰셨던데 and ...
    • 장명선
      2002.02.06 00:23
      어느 부분이 에러인지 잘 모르겠지만 에러나는 부분을 표시해주세요 그리고 Select 문장은 정확한것 같...
    • major
      2002.02.06 02:38
      제가 보기에는 이부분인거 같은 데여... with Query2 do     begin  &nbs...
    • 우정민
      2002.02.05 23:45
      타이머 interval 을 0.5초로 놓고 (타이머가 정확한 1초가 아니니까, 안전하게...) 현제 시간을 불러...
    • 이은호
    • 2002.02.05 20:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김규억
      2002.02.06 01:51
      ADO를 이용하던 BDE를 이용하던 DB에서 하는 작업하고는 상관없습니다... ADO가 DB를 관리하는게 아...
    • 브래드
    • 2002.02.05 20:42
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 허일학
      2002.02.10 02:28
      다음을 참고하시면 도움이 될꺼 깥은데....^^ var btn: Longint; begin // Button2의 원도우 정...
    • 공성환
      2002.02.05 22:00
      답변은 아니고 그냥 라벨 2개로 사용하셔도 되는데...
    • 임현창
      2002.02.06 01:06
      라벨 쓸 거면 하나로도 두 줄 쓸 수 있죠.
    • 최용일
      2002.02.05 23:24
      안녕하세요. 최용일입니다. 확장자가 다른거 외에는 아무런 차이점이 없습니다. 파일이라는것은 만들...
    • 이상협
    • 2002.02.05 20:37
    • 3 COMMENTS
    • /
    • 1 LIKES
    • 공성환
      2002.02.05 22:06
      procedure Proc_Button(vp_Comp: TComponent); procedure TForm1.Proc_Button(vp_Comp: TComponent); v...
    • 이상협
      2002.02.05 22:50
      이게 뭔소리에여 누구아는사람 해석좀 부탁드리께여 TWinControl ? ,  controls[vv_i] ? , 왕...
    • 최용일
      2002.02.05 23:20
      안녕하세요. 최용일입니다. TWinControl(...)한 것은 형변환한거네요... 님께서도 많이 쓰신 코드인데.....
    • 임현창
      2002.02.06 02:11
      BDE, DBTables 등의 유닛을 포함시키면 해당 함수들을 쓸 수 있습니다. 아무래도 C DLL에 있는 함수들을 ...
    • 성기수
      2002.02.06 03:01
      답변 주심에 감사드립니다. ^^
    • 조성필
    • 2002.02.05 19:33
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임현창
      2002.02.06 00:01
      CGI쪽 질문인지 MySQL 쪽 질문인지 잘 모르겠습니다. 아무튼 가장 간단한 CGI부터 설명을 드리긴 할텐데...
    • 공성환
      2002.02.05 19:38
      rownum이라는걸 써보세요... 그리고 500개정도면 인덱스만 잘걸면 속도도 나올것같은데... 우선 본인이 ...
    • 이병훈
      2002.02.05 22:43
      안녕하세요. 훔.. 만약 델파이를 사용하신다면 걱정없습니다. 델파이는 내부적으로 부분범위 처리를 ...
    • 강환춘
      2002.02.06 02:00
    • 돌멩이
      2002.02.05 06:22
      테이블의 데이터가 모두 같은 형이 아니라면 레코드를 사용해야 하지 않나요? 제가 이해를 잘 못했나요?...
    • * 아자!! *
      2002.02.05 06:45
      안녕하세요?.. 답변너무고마워요.. 될것 같으면서도 안되고.... 오늘 하루종일 이것가지구 고민을 했었는...
    • 오진욱
    • 2002.02.05 04:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 돌멩이
      2002.02.05 06:24
        ClientToScreen()   ScreenToClient() 위의 두개 함수를 사용해 보세요.. 도...
    • 강정구
    • 2002.02.05 03:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장명선
      2002.02.05 04:04
      MaskEdit 라는곳에 #을 입력하면 0은 표시가 안됩니다. 즐코 하세요
    • 한하눌
      2002.02.05 18:25
      프레임의 라인말구 shap를 사용하세요 물론 귀찮으시겠지만..