Q&A

  • SpeedButton의 제어!
안녕하세요!
회사에서 프로그램을 개발 중인데...아직 내공이 부족하여 안돼는 부분이 있습니다.
고수님들의 도움 요청합니다.

하나의 품위에 버튼이 여러게 있습니다. 모두 Enabled = False  입니다.
그리고 품위에 버튼의 이름은 하나의 테이블에 저장 되어 있습니다.
여기서 TQuery 로 테이블을 열어서 특정 버튼의 이름만 가저와서 해당 버튼의
Enabled = True 로 만들려고 합니다.

어떻게 하면 될까여? 도움 부탁합니다.
5  COMMENTS
  • Profile
    최용일 2007.06.27 22:50
    아래와 같이 하시면 쉽게 됩니다.

    <!--CodeS-->
    var
      Button: TSpeedButton;
    begin
      Button := TSpeedButton(FindComponent(버튼이름)); // 버튼이름 = TSpeedButton.Name
      if Assigned(Button) then
        Button.Enabled := False;
    end;
    <!--CodeE-->

  • Profile
    이봉구 2007.06.28 01:53
    답변 정말 감사 합니다.
    그런데 한가지 더 질문 드릴께요.
    밑의 문제 에서
    다른 품에서 해당 버튼을 제어 할려면 어떻게 해야 합니까?
    다시말해 버튼이 있는 폼 외의 다른 품에서 DB를 열고 다른 품의 해당 버튼의
    Enabled = True 로 만들려면 어떻게 하나요?
    답변 꼭 부탁합니다.
    오늘도 행복한 하루 되세요!



  • Profile
    최용일 2007.06.28 01:55
    Button := TSpeedButton(다른폼.FindComponent(버튼이름)); // 버튼이름 = TSpeedButton.Name

  • Profile
    이봉구 2007.06.28 02:44
    진짜진짜 감사 합니다.
    도움 많이 되고 있습니다.
    마지막으로 하나만더 질문 드리겠습니다.

    밑의 "TSpeedButton(다른폼.FindComponent(버튼이름)); " 에서 "다른품" 역시 DB에서 가저와서 표현하고자하면 어떻게 해야하는지요? 어떤식으로 선언하고 어떻게 표현하는지 부탁 드립니다.

    FORM : TForm;  //품 선언

    FORM := TForm(FindComponent(품이름)) ;
    Button := TSpeedButton(FORM .FindComponent(버튼이름)) ;

    위와 같이 표현해도 될까요?
    그런데 에러나는데......! ㅠ.ㅠ


  • Profile
    최용일 2007.06.28 19:19
    쩝~

    폼이 화면상에 떠 있다면 아래와 같이 하시면 됩니다.

    <!--CodeS-->
    function FindForm(const Name: string): TForm;
    var
      Index: Integer;
    begin
      Result := nil;
      for Index := 0 to Screen.FormCount - 1 do
      begin
        if Screen.Froms[Index].Name = Name then
        begin
          Result := Screen.Forms[Index];
          Exit;
        end;
      end;
    end;

    // ---------------
    var
      Form: TForm;
      Button: TSpeedButton;
    begin
      Form := FindForm(폼이름);
      if Assigned(Form) then
      begin
        Button := TSpeedButton(Form.FindComponent(버튼이름));
        // Button가지고 작업
      end;
    end;

    <!--CodeE-->