1
나는 검색했지만 검색했지만 예제가 없습니다. 동적으로 각각 PageControl
인스턴스를 만들고 싶습니다. TTabsheets
. 그러나 나는 내가 어떻게해야합니까, 델파이 IDE에서 불만을 얻을 : 주소 00000000동적으로 Tpagecontrol 인스턴스를 만듭니다.
의 모듈 FormApplication.exe 쓰기에
액세스 위반이 내가 놓친 거지 뭔가가 있나요?
procedure TForm1.FormCreate(Sender: TObject); type ABC_Status_Object = record ABC_PageControl_instance: TPageControl; quickStat_instance: TTabsheet; detailStat_instance: TTabsheet; abc_light: TShape; end; var ABC_Status: array of ABC_Status_Object; I: Integer; Frac, Icnt: Extended; begin inifile := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')); loadGlobalConfig; Frac := 100/NUM/100; for I := 0 to NUM do begin {// Create the Tabs: } ABC_Status[I].ABC_PageControl_instance := TPageControl.Create(self); ABC_Status[I].ABC_PageControl_instance.Parent := self; ABC_Status[I].quickStat_instance := TTabsheet.Create(ABC_Status[I].ABC_PageControl_instance); ABC_Status[I].detailStat_instance := TTabsheet.Create(ABC_Status[I].ABC_PageControl_instance); ABC_Status[I].quickStat_instance.PageControl := ABC_Status[I].ABC_PageControl_instance; ABC_Status[I].detailStat_instance.PageControl := ABC_Status[I].ABC_PageControl_instance; {// Set the attributes of each instance of PageControl, including the tabs: } ABC_Status[I].ABC_PageControl_instance.Visible := TRUE; ABC_Status[I].ABC_PageControl_instance.Top := 0; if(NUM = 1) then ABC_Status[I].ABC_PageControl_instance.Width := ClientWidth; if(NUM > 1) AND (NUM < 4) then begin Icnt := 100/(I+1)/100; ABC_Status[I].ABC_PageControl_instance.Width := Trunc(ClientWidth*Frac); ABC_Status[I].ABC_PageControl_instance.Left := 30; end; ABC_Status[I].quickStat_instance.Caption := 'Quick Status'; ABC_Status[I].quickStat_instance.Visible := TRUE; ABC_Status[I].detailStat_instance.Caption := 'Details'; ABC_Status[I].detailStat_instance.Visible := TRUE; end; end;
굉장! 나는 그것이 배열 길이를 할당하지 못하는 것보다 더 잘 알고 있어야만하는 바보 같은 것이라고 생각했다. 또한 100/NUM/100에 동의합니다. –
디버거가 배열에 액세스 한 첫 번째 코드 줄을 찾아 내지 못 했습니까? –