Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с ComboBox'ами 
:(
    Опции темы
D2fQ
  Дата 5.10.2009, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 21.12.2008

Репутация: нет
Всего: нет



Здравствуйте. 
Вот скрин программы: http://pic.ipicture.ru/uploads/091005/FWuXNGp3dR.png
В первом ComboBox'е находится афоризм, во втором - список слов из этого афоризма, а в третьем просто список разных слов.
Задача состоит в том, что при нажатии кнопки "Заменить" слово из второго ComboBox'а ищется в первом ComboBox'е и заменяется словом из третьего ComboBox'а.

У меня возникло две проблемы:
1. При выборе другого афоризма в первом ComboBox'е, во втором ComboBox'е все еще находятся слова из первой строки первого ComboBox'а.
2. Функция замены не работает.

Вот мой код:

Код

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
    ComboBox1->ItemIndex = 0;
    Label1->Caption = ComboBox1->Text;
    Form1->FillingComboBox2();
}
//---------------------------------------------------------------------------
void TForm1::FillingComboBox2() //функция для разбиения афоризма на слова и записи их в ComboBox2 
{
    AnsiString temp = ComboBox1->Text;
    int pos = 0;
    while(pos = temp.Pos(" ")){
        if (pos == 0) break;

        ComboBox2->Items->Add(temp.SubString(1,pos));
        temp.Delete(1,pos);
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
    Label1->Caption = ComboBox1->Text;
    Form1->FillingComboBox2(); //при вызове с этого места эта функция не работает, но когда вызывается в конструкторе - все ОК 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ReplaceButtonClick(TObject *Sender) // это функция замены, она не работает
{
    int pos = ComboBox1->Items->Strings[ComboBox1->ItemIndex].Pos(ComboBox2->Text);
    ComboBox1->Items->Strings[ComboBox1->ItemIndex].Delete(pos,pos + ComboBox2->Text.Length());
    ComboBox1->Items->Strings[ComboBox1->ItemIndex].Insert(ComboBox3->Text,pos);
    Label1->Caption = ComboBox1->Text;
}
//---------------------------------------------------------------------------


Помогите найти ошибки, пожалуйста.

Это сообщение отредактировал(а) D2fQ - 5.10.2009, 21:12

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  Replace.rar 6,96 Kb
PM MAIL   Вверх
V0LT
Дата 5.10.2009, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 16.6.2009

Репутация: нет
Всего: 2



Указал на явные ошибки ... ну а об чистоте кода подумайте сами =)

в си я всего три месяца не судите строго  smile 

Код

void TForm1::FillingComboBox2()
{
    AnsiString temp = ComboBox1->Text;
    int pos = 0;
        ComboBox2->Items->Clear();
    while(pos = temp.Pos(" ")){

        if (pos == 0) break;

        ComboBox2->Items->Add(temp.SubString(1,pos));
        temp.Delete(1,pos);
    }
        if (temp != "") ComboBox2->Items->Add(temp);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
    Label1->Caption = ComboBox1->Items->Strings[ComboBox1->ItemIndex];
    Form1->FillingComboBox2();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ReplaceButtonClick(TObject *Sender)
{
    int pos = ComboBox1->Items->Strings[ComboBox1->ItemIndex].Pos(ComboBox2->Text);

        AnsiString temp = ComboBox1->Items->Strings[ComboBox1->ItemIndex];

    temp.Delete(pos,pos + ComboBox2->Text.Length());

    temp.Insert(ComboBox3->Text,pos);

        ComboBox1->Items->Strings[ComboBox1->ItemIndex] = temp;

    Label1->Caption = temp;
}


З.Ы. Брейкпоинты и логику никто не отменял 

Это сообщение отредактировал(а) V0LT - 5.10.2009, 21:51
PM MAIL ICQ   Вверх
D2fQ
Дата 5.10.2009, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 21.12.2008

Репутация: нет
Всего: нет



V0LT, спасибо конечно, но я до этого и сам мог додуматься smile 
Меня больше интересует, почему мой код в функции ReplaceButtonClick не работает. Если можешь, объясни.
И осталась еще первая проблема...
В билдере я 2 дня, не судите строго smile
PM MAIL   Вверх
D2fQ
Дата 5.10.2009, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 21.12.2008

Репутация: нет
Всего: нет



При выборе другого афоризма в первом ComboBox'е, во втором ComboBox'е все еще находятся слова из первой строки первого ComboBox'а.
Как исправить?
PM MAIL   Вверх
Anikmar
Дата 5.10.2009, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(D2fQ @  5.10.2009,  23:02 Найти цитируемый пост)
При выборе другого афоризма в первом ComboBox'е, во втором ComboBox'е все еще находятся слова из первой строки первого ComboBox'а.
Как исправить? 

А где вы очищаете второй комбобокс перед его заполнением словами?
PM MAIL ICQ   Вверх
D2fQ
Дата 5.10.2009, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 21.12.2008

Репутация: нет
Всего: нет



Anikmar, спасибо.
V0LT, извините, что сразу не заметил эту строчку в вашем коде: ComboBox2->Items->Clear()
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0569 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.