Доброго времени суток уважаемые. Начал изучать язык программирования С++. Изучение как извесно лучше проходит во время написания программ. Вот столкнулся с проблеммами. Подскажите пожалуйста, что не так в коде.
В момент создания формы в ListBox заношу несколько строк. Хочу, чтобы новые строки, которые вносятся "руками" были другого цвета.
void __fastcall TFMain::LB_FDestinationDrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State)
{
for (int i=0; i<LB_FDestination->Items->Count; i++)
{
if (i<=CntFDestination-1) //проверяю — новая строка или нет
{
LB_FDestination->Canvas->FillRect(Rect);
LB_FDestination->Canvas->Font->Color = clBlue;
LB_FDestination->Canvas->TextOut(Rect.Left, Rect.Top, LB_FDestination->Items->Strings[i]);
}
else
{
Rect = LB_FDestination->ItemRect(i);
LB_FDestination->Canvas->Font->Color = clRed;
LB_FDestination->Canvas->Font->Style = TFontStyles()<< fsBold;
LB_FDestination->Canvas->TextOut(Rect.Left, Rect.Top, LB_FDestination->Items->Strings[i]);
}
}
}
Код вроде работает. Новая строка-первая вносится как нужно, но последующие затирают предыдущие.
И еще позвольте вопрос небольшой. Меня интересует существование аналога дельфовской функции
Copy(str, start_char, count_char)
str — исходная строка
start_char — начальный символ, с которого необходимо копировать.
count_char — количество копируемых символов.
24.05.05 22:43: Перенесено модератором из 'C/C++. Прикладные вопросы' — Павел Кузнецов
Здравствуйте, bestonix, Вы писали:
1) По вопросам, связаным с испоьльзованием Borland Builder вам подробнее ответят в форуме Delphi/Builder
2)
char *strncpy( char *strDest, const char *strSource, size_t count );
Parameters:
strDest — Destination string.
strSource — Source string. или, что то же самое, указатель на символ, откуда надо начинать копировать
count — Number of characters to be copied
3) Код лучше всётаки форматировать соответствующими тегами.
B>Доброго времени суток уважаемые. Начал изучать язык программирования С++. Изучение как извесно лучше проходит во время написания программ. Вот столкнулся с проблеммами. Подскажите пожалуйста, что не так в коде.
B>В момент создания формы в ListBox заношу несколько строк. Хочу, чтобы новые строки, которые вносятся "руками" были другого цвета.
B>void __fastcall TFMain::LB_FDestinationDrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State)
B>{
B> for (int i=0; i<LB_FDestination->Items->Count; i++)
B> {
B> if (i<=CntFDestination-1) //проверяю - новая строка или нет
B> {
B> LB_FDestination->Canvas->FillRect(Rect);
B> LB_FDestination->Canvas->Font->Color = clBlue;
B> LB_FDestination->Canvas->TextOut(Rect.Left, Rect.Top, LB_FDestination->Items->Strings[i]);
B> }
B> else
B> {
B> Rect = LB_FDestination->ItemRect(i);
B> LB_FDestination->Canvas->Font->Color = clRed;
B> LB_FDestination->Canvas->Font->Style = TFontStyles()<< fsBold;
B> LB_FDestination->Canvas->TextOut(Rect.Left, Rect.Top, LB_FDestination->Items->Strings[i]);
B> }
B> }
B>}
B>Код вроде работает. Новая строка-первая вносится как нужно, но последующие затирают предыдущие.
B>И еще позвольте вопрос небольшой. Меня интересует существование аналога дельфовской функции
B>Copy(str, start_char, count_char)
B>str — исходная строка
B>start_char — начальный символ, с которого необходимо копировать.
B>count_char — количество копируемых символов.
Сделать человеку приятное очень просто. Не сделайте ему гадость и ему будет приятно!
Баг — это клоп. Таpакан — это, видимо, фича.
Здравствуйте, bestonix, Вы писали:
B>Доброго времени суток уважаемые. Начал изучать язык программирования С++. Изучение как извесно лучше проходит во время написания программ. Вот столкнулся с проблеммами. Подскажите пожалуйста, что не так в коде.
B>В момент создания формы в ListBox заношу несколько строк. Хочу, чтобы новые строки, которые вносятся "руками" были другого цвета.
B>void __fastcall TFMain::LB_FDestinationDrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State)
B>{
B> for (int i=0; i<LB_FDestination->Items->Count; i++)
B> {
B> if (i<=CntFDestination-1) //проверяю — новая строка или нет
B> {
B> LB_FDestination->Canvas->FillRect(Rect);
B> LB_FDestination->Canvas->Font->Color = clBlue;
B> LB_FDestination->Canvas->TextOut(Rect.Left, Rect.Top, LB_FDestination->Items->Strings[i]);
B> }
B> else
B> {
B> Rect = LB_FDestination->ItemRect(i);
B> LB_FDestination->Canvas->Font->Color = clRed;
B> LB_FDestination->Canvas->Font->Style = TFontStyles()<< fsBold;
B> LB_FDestination->Canvas->TextOut(Rect.Left, Rect.Top, LB_FDestination->Items->Strings[i]);
B> }
B> }
B>}
B>Код вроде работает. Новая строка-первая вносится как нужно, но последующие затирают предыдущие.
B>И еще позвольте вопрос небольшой. Меня интересует существование аналога дельфовской функции
B>Copy(str, start_char, count_char)
B>str — исходная строка
B>start_char — начальный символ, с которого необходимо копировать.
B>count_char — количество копируемых символов.
void __fastcall TFMain::LB_FDestinationDrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State)
{
if (Index<=CntFDestination-1) //проверяю - новая строка или нет
{
LB_FDestination->Canvas->FillRect(Rect);
LB_FDestination->Canvas->Font->Color = clBlue;
LB_FDestination->Canvas->TextOut(Rect.Left, Rect.Top, LB_FDestination->Items->Strings[Index]);
}
else
{
LB_FDestination->Canvas->FillRect(Rect);
LB_FDestination->Canvas->Font->Color = clRed;
LB_FDestination->Canvas->Font->Style = TFontStyles()<< fsBold;
LB_FDestination->Canvas->TextOut(Rect.Left, Rect.Top, LB_FDestination->Items->Strings[Index]);
}
}
}