MS VC++ въпрос

3 отговора 171 прегледа
#1

MS VC++ въпрос

Използвам контролата MSFLEXGRID. Първия ред е фиксиран и съдържа наименованията на колоните. Налага ми се някои от тези наименованията да ги променям динамично в процеса на изпълнение. Въпросът ми е възможна ли е такава промяна (в helpa на контролата не намерих нужната информация) ?

Отговор
в отговор на LJ #2

Re: MS VC++ въпрос

Да. В help-a ги има в графата properties. Първо трябва да укажеш, активна клетка. Слет като имаш активна клетка можеш да правиш каквото искаш в нея вкл. и да променяш текста и.
Кода е нещо от сорта:

int i=0, j=0;
m_ctrlFlexGrid.Row() = i; // избираш i ред
m_ctrlFlexGrid.Col() = j; // избираш j колона
m_ctrlFlexGrid.Text() = "niakakyv tekst";

А, ако откриеш как да въвеждаш текст от клавиатурата в някоя клетка пиши тук.
Успех.

Отговор
в отговор на Rosen #3

Re: MS VC++ въпрос

За давъвеждаш текст от клавиатурата можеш
да използваш събитието "KeyPress" на контрола.
Контрола ти дава натиснатия клавиш като "short FAR* KeyAscii".

Ето ти и много прост пример:

void CMyDlg::OnKeyPressMsfgrid(short FAR* KeyAscii)
{
CString text = m_ctlFGrid.GetText();
m_ctlFGrid.SetText(text + (char*)KeyAscii);
}

Горния код въвежда текст в активната в момента клетка.
Ако искаш друга клетка знаеш как да постъпиш.
Ако искаш контрола да реагира по друг начин при
натискане на определени клавиши (например да изтрива текста при натискане на "Delete" тогава можеш да проверяваш кой клавиш е натиснат и да реагираш по желания от теб начин.

Pozdravi ot Bourgas.
Отговор
в отговор на Rosen #4

Re: MS VC++ въпрос

В конкретния случаи въвеждам данните в отделно поле (както в Excel). Друг начин е да се направи плаващ Edit box, който се премества върху избраната клетка или да се използва варианта на pbourgas. Вероятно има и други начини.

Отговор