Citat:
Originalno napisao Dragi Tata
Mogu samo da nagađam ovako bez koda, ali da li ti je ta "nestajuća" list kontrola deklarisana kao lista u resource editoru ili se dodaje dinamički na dijalog?
Takođe, nije mi jasno čemu ta picture control ako ne prikazuješ slike. U stvari, kladim se da je taj "prazan" prostor koji se vidi kad zatvoriš dijaloge baš ta kontrola.
|
rekla sam da cu ostaviti kod ako zatreba - ima ga puno pa sam mislila da nije najbolje poceti tako.
ta lista jeste list control na jednom child dijalogu, koji se jos negde drugde koristi, a taj sam child je istovremeno child od onog koji se nalazi na ovom parent dijalogu. -> vidi sliku
sad, cemu taj picture control, on mi sluzi kao mesto na kom dolazi child dijalog. kako inace da osiguram gde, tj na kojoj poziciji u tom parentu, ce se zakaciti child? tako je radjeno pre u programu u nekim jednostavnijim slucajevima. nisam znala sta drugo da radim
deo koda, koji bi ti mogao biti interesantan:
mesto u glavnom dijalogu gde se radi spajanje dijaloga:
Kôd:
case 0:
dlgInfolist.pCurrDrawing = pCurrDrawing;
dlgInfolist.pDwgBlock = pDwgBlock;
dlgInfolist.vdi = vdi;
dlgInfolist.IsDDC = IsDDC;
if (pdialog) {
DetachChildDialog (pdialog);
}
if (! (AttachChildDialog (&dlgInfolist, &m_FdevEditChild))) {
TricErrorBox(IDS_ERR_FILL_DIALOG);
return FALSE;
//EndDialog (IDCANCEL);
} else {
pdialog = &dlgInfolist;
}
//dlgInfolist.FillDlgCtrl();
dlgInfolist.ShowWindow(TRUE);
break;
u tom prvom child dijalogu, OnInit fja
Kôd:
BOOL CFdevEditInfolist::OnInitDialog()
{
CTricDialog::OnInitDialog ();
bDlgInfolistActive = TRUE;
dlgDDC_RA.bCheckAutoCalc = pDwgBlock->data.iGE_Status;
//DetachChildDialog (&dlgDDC_RA, &m_DDC_RA);
//if (! (AttachChildDialog (&dlgDDC_RA, &m_DDC_RA) && LoadData () && FillDlgCtrl ())) {
if (GetProject ()->cInfoCalc.GetProInfoCalcData (GetProject ()->ID)) {
if (GetProject ()->cInfoCalc.arrProjectInfoCalc.GetCount () > 0) {
dlgDDC_RA.bAutoCalc = TRUE;
}
}
if (! (AttachChildDialog (&dlgDDC_RA, &m_DDC_RA) && LoadData () )) {
TricErrorBox (IDS_ERR_FILL_DIALOG);
EndDialog (IDCANCEL);
return FALSE;
}
FillDlgCtrl();
return TRUE;
}
OnInit drugog child dijaloga na kom je ta lista
Kôd:
BOOL CFieldDevicePropsDlg::OnInitDialog ()
{
CTricDialog::OnInitDialog ();
if (!DBConnection.CheckConnection ()) {
TricErrorBox (IDS_ERR_CONECTION);
EndDialog (IDCANCEL);
return FALSE;
}
((CButton*) GetDlgItem (IDC_BTN_VISIBLE))->ShowWindow (bShowVisibleColumn);
listProperties.SetExtendedStyle (LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
if (bShowVisibleColumn) {
m_staticImageList.Create (16, 16, ILC_MASK, 0, 1);
m_staticImageList.Add (acedGetAcadWinApp ()->LoadIcon (IDI_OFF));
m_staticImageList.Add (acedGetAcadWinApp ()->LoadIcon (IDI_ON));
listProperties.SetImageList (&m_staticImageList, LVSIL_SMALL);
}
AddControl (IDC_TEXT_CAPTION, sizeResize, sizeNone);
AddControl (IDC_LIST_PROPERTIES, sizeResize, sizeResize, TRUE,TRUE);
AddControl (IDC_CHK_USEFUNCTIONTYPES, sizeResize, sizeRepos, TRUE, TRUE);
AddControl (IDC_CHK_USEAUTOCALC, sizeResize, sizeRepos, TRUE, TRUE);
AddControl (IDC_BTN_EDIT, sizeNone, sizeRepos, FALSE);
if (bShowVisibleColumn) {
AddControl (IDC_BTN_VISIBLE, sizeNone, sizeRepos, FALSE);
}
AddControl (IDC_BTN_SELECTALL, sizeRepos, sizeRepos, FALSE);
AddControl (IDC_BTN_DELESECTALL, sizeRepos, sizeRepos, FALSE);
DisableControls ();
return TRUE;
}
kada se klikne na ono dugme Edit u tom dijalogu:
Kôd:
void CFieldDevicePropsDlg::OnEdit ()
{
UpdateData ();
// first find out which props are selected
int iCount = listProperties.GetItemCount ();
CTricArray<CFieldDeviceProps*> arrSelected;
int i;
for (i = 0; i < iCount; i++) {
if (listProperties.GetItemState (i, LVIS_SELECTED) == LVIS_SELECTED) {
arrSelected.Add (&arrProps [i]);
}
}
// then edit all of them
for (i = 0; i < arrSelected.GetSize (); i++) {
// This runs the dialog "CDPFunctionSelectDlg()"
SetNumberOfFunctions (*arrSelected [i]/*, _wtoi (strCont) */);
if (arrSelected [i]->GetNumberOfFunctions () > 0) {
arrSelected [i]->SetVisible (1);
}
}
/*::InvalidateRect(listProperties.m_hWnd, NULL, TRUE);
listProperties.UpdateWindow();*/
FillList ();
listProperties.SetFocus();
}