Моя первая программа wxFormBuilder Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Моя первая программа wxFormBuilder

Post by midisa » Fri Jul 02, 2010 5:31 am

Запускаю wxFormBuilder, выполняю действия которые описаны на этой странице: http://wiki.wxformbuilder.org/Tutorials ... ormBuilder

И у меня возник первый мой вопрос:
Layout - это что? Это только для создания дизайна или это как то связано с программной частью?

У меня первый мой проект имеет (как я думаю) сложную структуру (см картинку прикрепленного файла). Если Layout нужен только для дизайна, то как мне увидеть увидеть эти ячейки и как мне добавить в одну ячейку другой layout?
Attachments
Snap2.jpg
Так должен выглядеть мой первый проект

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Fri Jul 02, 2010 5:35 am

Layout это, я так понял, система классов для верстки, размещение элементов в окне.
Добавлять: выделяешь в дереве элементов лайот и жмешь добавить новый.

Что касается просмотра не понял в редакторе вроде и так все подсвечивается
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Post by midisa » Fri Jul 02, 2010 5:44 am

SmileGobo wrote:Layout это, я так понял, система классов для верстки, размещение элементов в окне.
Это влияет на программный код программы? Например я могу поставить 1 лайоут или 25 лайоутов. Если они не влияют на программный код, то ничего страшного, а если влияют (например передают события), то нужно будет передавать события через указателя из одного лайоута в другой.

В общем я не понимаю что это такое и для чего это нужно. Сложно все так ... когда уровень знаний равен нулю. :-)

SmileGobo
Earned some good credits
Earned some good credits
Posts: 111
Joined: Wed Jul 30, 2008 8:01 am
Location: Russia/MO
Contact:

Post by SmileGobo » Fri Jul 02, 2010 6:06 am

ну если не правильно сверстать, вероятно, повлияет на производительность или все поедет, с событиями вроде никогда лайоты не связывал. Так как в ГУИ пришел из веб, там верстать подобным образом обычное дело быстро освоился, хотя глубоко не копал. Использую лайоты для табличной верстки. Собственно в документации сказано именно для этого они и предназначены.
win xp sp2; CodeBlocks/mingw/wxWidgets 2.8.9/wxFormBuilder
web-программирование:PHP,js/Ajax

Mojo
Super wx Problem Solver
Super wx Problem Solver
Posts: 401
Joined: Wed Sep 21, 2005 8:17 am
Location: Rostov-on-Don, Southern Russia

Post by Mojo » Fri Jul 02, 2010 6:34 am

midisa wrote:
Это влияет на программный код программы? Например я могу поставить 1 лайоут или 25 лайоутов. Если они не влияют на программный код, то ничего страшного, а если влияют (например передают события), то нужно будет передавать события через указателя из одного лайоута в другой.

В общем я не понимаю что это такое и для чего это нужно. Сложно все так ... когда уровень знаний равен нулю. :-)
Не влияют.

Смысл сайзеров в том, что бы при изменении размеров окна, контролы не поехали.....
Win XP HE SP3, Vista
Xubuntu 12.04 LTS
wxWidgets-2.9.5
wxWidgets-3.0.0

midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Post by midisa » Mon Jul 05, 2010 3:02 am

Mojo wrote:
midisa wrote:
Это влияет на программный код программы? Например я могу поставить 1 лайоут или 25 лайоутов. Если они не влияют на программный код, то ничего страшного, а если влияют (например передают события), то нужно будет передавать события через указателя из одного лайоута в другой.

В общем я не понимаю что это такое и для чего это нужно. Сложно все так ... когда уровень знаний равен нулю. :-)
Не влияют.

Смысл сайзеров в том, что бы при изменении размеров окна, контролы не поехали.....
Помогите разобраться с сайзерами. Мне нужно сделать внешний вид как на картинке. Ставлю сначала горизонтальный сайзер, в него вставляю грид (сайзер), устанавливаю количество полей и строк. Вставляю элементы. Получается вертикальный отступ огромный, пытаюсь всячески урегулировать вертикальный отступ, не получается. Вставляю в грид снова горизонтальный сайзер. В горизонтальном элементы устанавливаются нормально, но то что ниже грида, совершенно не может быть установлено. Расстояние между верхними элементами и нижними огромное. Не получается урегулировать элементы управления. Может есть хитрость какая то? Или наверное я что то не правильно делаю ... Помогите разобраться. Заранее спасибо.

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Mon Jul 05, 2010 4:18 am

Можно вставлять сколько угодно обычных BoxSizer'ов в каждом из которых будет попарно лежать нужные тебе элементы управления - скажем StaticText + TextCtrl
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Post by midisa » Mon Jul 05, 2010 5:24 am

borr_1 wrote:Можно вставлять сколько угодно обычных BoxSizer'ов в каждом из которых будет попарно лежать нужные тебе элементы управления - скажем StaticText + TextCtrl
Не получается. посмотрите мой файл. Подскажите как правильно сделать?
Attachments
pass.fbp.tar.gz
(3.43 KiB) Downloaded 177 times

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Mon Jul 05, 2010 6:54 am

Там вроде все впорядке только добавь wxGrid'у флаг wxEXPAND поставь bSizer10 proportion = 1, а m_panel2 proportion=0 и смотри что выйдет.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Post by midisa » Mon Jul 05, 2010 7:26 am

borr_1 wrote:Там вроде все впорядке только добавь wxGrid'у флаг wxEXPAND поставь bSizer10 proportion = 1, а m_panel2 proportion=0 и смотри что выйдет.
Вроде бы сделал как смог. Посмотрите пожалуйста.... может можно сделать как то лучше или аккуратнее?

Пользуясь случаем есть дальнейшие вопросы:
1. В моей старой программе, на кнопках есть картинки. Как сдесь картинку к кнопке прикрутить?
2. Как работать с таким гридом? Его командами нужно наполнять или у него есть свой рекордсет? Я спрашиваю потому, что мне нужно будет делать динамические данные. Вдруг у меня будет в базе 1.5 млн записей ... нужно чтобы он открывал по 300 строк, в зависимости от горизонтальной прокрутки. Может кто то уже это написал?
3. Я хочу работать с базой данных созданной в опен офисе. Какой механизм я должен использовать для работы с этой базой? В будущем я буду работать только с двумя типами баз: 1. Опен офис орг, 2. PostgreSQL server. Может есть механизм, который позволит идентично работать (строка соединения) с обеими типами баз (кроме синтаксиса, синтаксис я буду использовать в каждом отдельном случае свой).

Буду очень признателен за помощь по любому из пунктов.
Attachments
pass.fbp.tar.gz
(4.46 KiB) Downloaded 219 times

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Mon Jul 05, 2010 8:26 am

midisa wrote: 1. В моей старой программе, на кнопках есть картинки. Как сдесь картинку к кнопке прикрутить?
смотри wxBitmapButton
midisa wrote: 2. Как работать с таким гридом? Его командами нужно наполнять или у него есть свой рекордсет? Я спрашиваю потому, что мне нужно будет делать динамические данные. Вдруг у меня будет в базе 1.5 млн записей ... нужно чтобы он открывал по 300 строк, в зависимости от горизонтальной прокрутки. Может кто то уже это написал?
Билерского аналога DataSet тут нет. Заливать по 300 строк от прокрутки не всегда удобно. Проще сделать загрузку в фоне в отдельном потоке. Или просто фильтр.
midisa wrote: 3. Я хочу работать с базой данных созданной в опен офисе. Какой механизм я должен использовать для работы с этой базой? В будущем я буду работать только с двумя типами баз: 1. Опен офис орг, 2. PostgreSQL server. Может есть механизм, который позволит идентично работать (строка соединения) с обеими типами баз (кроме синтаксиса, синтаксис я буду использовать в каждом отдельном случае свой).
Попробуй ODBC (databaselaer)
1. Опен офис орг, 2. PostgreSQL server.
а сразу firebird embeded и server для этого нельзя взять?[/quote]
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Post by midisa » Tue Jul 06, 2010 4:19 am

borr_1 wrote: Попробуй ODBC (databaselaer)
1. Опен офис орг, 2. PostgreSQL server.
а сразу firebird embeded и server для этого нельзя взять?
[/quote]

ODBC (databaselaer) - этот механизм есть в рамках wx...? Можно ссылку на простой пример?

Я ранее пырхался найти пример odbc, но не смог найти.

P.S. Я буду использовать только два вида баз данных, для локальных подключений Open Office org, Для серверных PostgreSQL. Остальное не интересует.

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Tue Jul 06, 2010 4:50 am

http://sourceforge.net/projects/wxcode/ ... baselayer/

обрати внимание там есть файлы со словом documentation в названии. это отдельный компонент нужно будет его скомпилить смотри тут по форуму в поиске очень часто обсужался.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

midisa
Earned some good credits
Earned some good credits
Posts: 113
Joined: Tue Jun 22, 2010 4:15 pm
Contact:

Post by midisa » Tue Jul 06, 2010 5:47 am

borr_1 wrote:http://sourceforge.net/projects/wxcode/ ... baselayer/

обрати внимание там есть файлы со словом documentation в названии. это отдельный компонент нужно будет его скомпилить смотри тут по форуму в поиске очень часто обсужался.
За документацию спасибо. В документации есть пример sample.html ... за такие примеры руки нужно отрывать ... Это не пример а программа. Вместо трех строк кода они выдернули кусок программы (примерно 1000 строк если не больше). Это так крик души т.к. чаще всего такие примеры не работают...

В любом случае спасибо за информацию. Два дня уйдет на то, чтобы разобрать эту кучу кода...

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Tue Jul 06, 2010 6:33 am

Павлины, говоришь... ХЭХ! (ЦЭ)

Code: Select all

OdbcDatabaseLayer *pDatabase = new OdbcDatabaseLayer();
    pDatabase->Open(wxT("DRIVER=Microsoft Access Driver (*.mdb);"
                    "UID=admin;"
                    "UserCommitSync=Yes;"
                    "Threads=3;"
                    "SafeTransactions=0;"
                    "PageTimeout=5;"
                    "MaxScanRows=8;"
                    "MaxBufferSize=2048;"
                    "FIL=MS Access;"
                    "DriverId=25;"
                    "DefaultDir=C:\\Program Files\\Client\\DB;"
                    "DBQ=C:\\Program Files\\Client\\DB\\clientdb.mdb"));
     DatabaseResultSet* pResults = pDatabase->RunQueryWithResults(_("SELECT * FROM Balance"));
     if (pResults)
      {
       int i=0;
        while (pResults->Next())
         {
          itemGrid3->SetCellValue(i,0,pResults->GetResultString(_("DocumentPartName")));
          itemGrid3->AppendRows(1, true);
          i++;
         }
        pDatabase->CloseResultSet(pResults);
      }
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

Post Reply