Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

У меня вопрос

21K
25 мая 2008 года
Revenant
29 / / 25.05.2008
пстараюсь как можно четче изложить суть вопроса:

Я программирую на С++ в среде .NET. У меня есть h-файл, содержащий ссылочный класс виндовской формы, в нем приватные поля textbox'ы.
Еще один h-файл у меня содержит ссылочный класс, в котором одно единственное поле типа String^, 2 метода - копирование строки в строку, сравнение 2-х строк.
короче, возможно ли сделать так, чтобы в методах этого класса я мог написать имена нужных текстбоксов (из класса формы) и менять их содержимое непосредственно там, а в обработчике просто вызвать метод и текстбоксы обрабатывались бы в соответствии с содержимым метода? надеюсь понятно объяснил
5
25 мая 2008 года
hardcase
4.5K / / 09.08.2005
Нет не можете.
Зато можете написать метод, который принимает на вход два параметра типа Control^ (TextBox-а наследуются от него) и меняет их свойства Text при вашем условии.
21K
26 мая 2008 года
Revenant
29 / / 25.05.2008
ок. большое спасибо. но у меня еще вопрос.для наглядности вот код:
Код:
void Copy(const komand ^ t, Control ^ a)
       {
           if (t->str->Length>str->Length)
               throw gcnew Exception("Длина строки-приемника меньше длины строки-источника!");
           if (t->str=="" && str=="") throw not_enter();
           else  
       {
               
               array<Char>^mas1 = str->ToCharArray();
               array<Char>^mas2 = t->str->ToCharArray();
               int n = str->Length;
               str = "";
               
               for (int i=0; i<t->str->Length; i++)
               {
                   a->Text=to_Bin(i+1);  // текущий индекс
                   Threading::Thread::Sleep(200); // задержка
                   if (i==str->Length-1) break;
                   mas1=mas2;
               }
               for (int i=0; i<n; i++) str+=mas1;
           
           }
           //return this;
       }

метод копирует строку в строку. при вызове метода мне необходимо ,чтоб в переменную Control ^ a с задержкой в несколько секунд перезаписывались текущие символы. проблема в том, что по окончании его выполнения в текстбоксе лежит только окончательное значение, нет эффекта пошаговости. что можно сбелать чтобы вывод происходил по шагам и с задержкой?
5
26 мая 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: Revenant
метод копирует строку в строку.


Концептуально, копировать строку в другую строку нельзя. String^ представляет собой константный объект.

Цитата: Revenant
при вызове метода мне необходимо ,чтоб в переменную Control ^ a с задержкой в несколько секунд перезаписывались текущие символы


Вариант с работой в одном потоке управления:

Код:
void Copy(const komand ^ t, Control ^ a)
{
    String^ source = t->str;    
   
    for(int sub_len = 1; sub_len <= source->Length; ++sub_len) {
        String^ sub_source = source->Substring(0, sub_len);
        a->Text = sub_source;
        Thread::Sleep(200); // эмулируем задержку
       
        Application::DoEvents(); // обрабатываем очередь сообщений
    }
   
}
21K
27 мая 2008 года
Revenant
29 / / 25.05.2008
Спасибо большое Вам за помощь.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог