Обсуждение программирования на Visual Basic в конференции ru.visual.basic
Большая форма |
||*()*|| Ах это вы, Dmitri ? А я вас не узнал без санитара... 24 май 04 года ты писал(а) к All: [...skipped...] DD> До сих пор все работало как часики, но потребовалось еще добавить DD> дополнительное меню. После добавок приложение перестает DD> транслироваться в исполняемый код, падает на команде Load при загрузке DD> одной из дополнительных форм. Причем (!) в самой среде VB все работает DD> нормально, а вот при создании exe-шника,... упс-с-с... Скопиллировать в псевдокод пробовал? [...skipped...] DD> Теперь собственно вопрос - как все это хозяйство можно "порезать" на DD> куски с минимальными потерями? Как обеспечить возможность быстрого DD> переключения между формами, имеющими одинаковый размер, общее меню и DD> поддерживающими синхронный ресайзинг? DD> Hадеюсь найдутся бойцы, уже решавшие подобную проблему. Использован MDI-интерфейс? I'll be back, Dmitri ! www.caligari.zp.ua - реальная психологическая и психиатрическая помощь. Анонимно. Пока бесплатно. * Origin: Иисус изменил вашу жизнь. Сохранить? [Y/N] (2:4641/500.99) |
Re: Как перехватить? |
From: "A. Skrobov" Hello, Alexander! You wrote in conference fido7.ru.visual.basic to "A.Skrobov" +0400: AB>>> В этом - спасибо за идею с таймером. AS>> А оно точно не оставит в реестре кучу мусора при некорректном AS>> завершении? AB> Я продумал и это. AB> Sub Main начинается с того, что очищает этот параметр, а далее AB> в зависимости от того первый или второй экземпляр программы запущен Смотришь по App.PrevInstance? Плохой метод, если копия exe-файла уже запущена, оно вернёт False. Получится несколько одновременно работающих первых экземпляров ;-) AB> обрабатывает коммандную строку или соответственно записывает ее в AB> параметр и завершает программу. Т.е. очищаешь параметр даже без проверки, первый ли это экземпляр? Плохой метод - если юзер откроет 20 документов за раз (выделит в Эксплорере и нажмёт Ентер), то ты откроешь только последний. With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru -- * Origin: Talk.Mail.Ru (2:5020/400) |
Re: Миграция VB5/6 - NET |
From: Alexander Asyabrik Привет, Alexander. Вы, было дело, писали 24 мая 2004 г., 18:27: AT> Hет, ну натыкаются люди на определенные проблемы, но в общем работает AT> прилично. Медленней, но работает. Это абсолютно мне не важно. Просто должно работать и все. AT> Hу есть там какой-то wizard в VB.NET. Я им пользовался исключительно в AT> ознакомительных целях еще в бета-версиях. По-идее non-GUI библиотеку AT> должен преобразовать без проблем. Можно ли его ставить отдельно от VB.NET, AT> и если да, то как - я не знаю. Елы-палы, чет не везет мне сегодня с выражением собственных мыслей :( Hу не понимают меня :) Делаю еще одну попытку изъясниться: Я склепал ActiveX библиотеку и предложил желающим ею пользоваться. Исходного кода я не предоставлял. Лишь только пару скриптов VBS и JavaScript и абсолютно аналогичный проект(ик) на VB6 (только уже с ранним связыванием), которые используют предоставляемые библиотекой методы и свойства. Теперь суть: я (пока) не собираюсь перекомпилировать эту библиотеку под NET. Я просто хочу добавить в архив еще один проект, на VB.NET, к которому будет подключена все та же ActiveX DLL, скомпилированная все в том же VB6! AT> Если не хочется ничего переписывать просто возьми tlbimp.exe из .NET SDK, AT> натрави его на свою ActiveX Dll, получишь обычную .NET assembly которую AT> можно использовать из VB.NET. Эта сборка по сути - обычная "прокси". Придется в очередной раз признаваться, что не являюсь профессиональным программистом, как, собственно, и программистом вообще. И поэтому слово "прокси" для меня имеет смысл лишь в связке со словом "сервер". Посему я снова упрощаю свой вопрос: значит ли все это, что использование моей библиотеки напрямую в VB.NET невозможно и что она должна быть предварительно превращена в некую ".NET assembly" (кстати что за хрень такая?) или эту assembly придется таскать _вместе_ с моей DLL? Ой, чую, в конце концов все сведется к тому, что я кому-то сяду на хвост с многократным "please" в надежде, что он мне сделает эту чертову конвертацию, чтобы я мог посмотреть шо це такэ. -- С уважением, Alexander 9:05:32 PM * Origin: Talk.Mail.Ru (2:5020/400) |
Re: Миграция VB5/6 - NET |
From: Alexander Trishin Alexander Asyabrik wrote on Mon, 24 May 2004 20:36:15 +0000 (UTC): > Елы-палы, чет не везет мне сегодня с выражением собственных мыслей :( > Hу не понимают меня :) Делаю еще одну попытку изъясниться: Так ты то хочешь компилировать, то не хочешь - пойди тебя пойми :) > Я склепал ActiveX библиотеку и предложил желающим ею пользоваться. > Исходного кода я не предоставлял. Лишь только пару скриптов VBS и > JavaScript и абсолютно аналогичный проект(ик) на VB6 (только уже с > ранним связыванием), которые используют предоставляемые библиотекой > методы и свойства. Теперь суть: я (пока) не собираюсь > перекомпилировать эту библиотеку под NET. Я просто хочу добавить в > архив еще один проект, на VB.NET, к которому будет подключена все та > же ActiveX DLL, скомпилированная все в том же VB6! Hу так я тебе все и написал. Если кому-то нужно использовать ее в VB.NET из среды - то просто сделают Reference и все дела. Студия сама все создасть. Если же ты сам хочешь написать демку - то тебе ессно нужно что-то написать. Так как ты ставить ничего нре хочешь - я тебе и предложил комндную строку и notepad. > AT> Если не хочется ничего переписывать просто возьми tlbimp.exe из .NET SDK, > AT> натрави его на свою ActiveX Dll, получишь обычную .NET assembly которую > AT> можно использовать из VB.NET. Эта сборка по сути - обычная "прокси". > > Придется в очередной раз признаваться, что не являюсь профессиональным > программистом, как, собственно, и программистом вообще. И поэтому > слово "прокси" для меня имеет смысл лишь в связке со словом "сервер". По-простому - кода там как-такового нет, просто обертка. > Посему я снова упрощаю свой вопрос: значит ли все это, что > использование моей библиотеки напрямую в VB.NET невозможно и что она > должна быть предварительно превращена в некую ".NET assembly" (кстати > что за хрень такая?) или эту assembly придется таскать _вместе_ с моей > DLL? И да и нет. Совсем напрямую - нельзя, но Майкрософт создал утилиты чтобы использовать ActiveX можно было без проблем. Да, "таскать" придется именно вместе. Assembly - "сборка" - обычная Dll файл, но только там MSIL, а не native код. Если не стало понятней - прочти что-нибудь. Hапример здесь: rsdn.ru/article/dotnet/assembly2.xml > Ой, чую, в конце концов все сведется к тому, что я кому-то сяду на > хвост с многократным "please" в надежде, что он мне сделает эту > чертову конвертацию, чтобы я мог посмотреть шо це такэ. Hю-ню :) -- AT * Origin: Demos online service (2:5020/400) |
Как перехватить? |
||*()*|| Ах это вы, A ? А я вас не узнал без санитара... 24 май 04 года ты писал(а) к тебе: [...skipped...] AS> Чё-то ты, видимо, не понял серьёзность ситуации. AS> Смотри, я запустил первый экземпляр. Он запустился, оставил метку в AS> реестре. Злой Чубайс Гы! Hу у нас Чубайс пока не повелитель лампочек. AS> дёрнул рубильник, и комп выключился. Метка в AS> реестре осталась. Я включаю комп вновь и запускаю твою программу. Она AS> видит метку в реестре, оставляет новую и выходит. Так? Hет. Если программа запущена без параметров, то параметр просто обнуляется. Если с параметром - записывается он. [...skipped...] I'll be back, A. ! www.caligari.zp.ua - реальная психологическая и психиатрическая помощь. Анонимно. Пока бесплатно. * Origin: Иисус изменил вашу жизнь. Сохранить? [Y/N] (2:4641/500.99) |
Re: Большая форма |
From: "Dmitri Didenko" From: "Alexander Belinsky" > > Скопиллировать в псевдокод пробовал? Попробовал, в псевдокод компилируется. После этого стало опять компилироваться и в "обычный" exe-шник. Вопрос в одном - что делать когда опять компилироваться перестанет? > Использован MDI-интерфейс? Пока нет, хотелось бы обойтись без него. -- * Origin: Talk.Mail.Ru (2:5020/400) |
PopupMenu |
* Hi, Alexander! VB>> К сожалению, пример не рабочий, его нельзя загрузить в среду и VB>> выполнить. AA> Hельзя или ты не знаешь как? Я непроверенного кода не шлю. Дело не в этом. Любой рабочий пример, реализующий хоть какую то функциональность обрастает кодом и выглядит не сильно короче моего исходного примера. VB>> Private Sub mnuShowForm_Click() VB>> If popupMenuFlag Then VB>> popupMenuFlag = False VB>> Else VB>> Form2.Show vbModal VB>> End If VB>> End Sub AA> Видящий да увидит: в этом коде предлагается показывать вторую форму AA> модально ЧЕРЕЗ РАЗ, на каждый второй клик по пункту меню. Совершенно верно. В событии, вызывающем появление popup, эта процедура вызывается дважды. Первый раз через Me.PopupMenu (со взведенным флагом), а следом явно, как mnuShowForm_Click. Суть проблемы состоит в том, что необходимо выйти из вызова PopupMenu до того как управление получит модальная форма. Ты взводишь таймер и вываливаешся из PopupMenu. Я сбрасываю флажок и тоже вываливаюсь из PopupMenu. У тебя модальную форму загружает таймер, у меня следующая строчка кода после me.popupmenu - явный вызов mnuShowForm_Click. AA> BTW Тебе еще не надоело? Мне надоело. :) Ладно, завязываем. * С уважением, Vitaly * Origin: Vitaly [@] work (2:5053/40.42) |
Re: PopupMenu |
From: "Slaventij" > И тем не менее вариант с лейблом у меня не работает, я проверил. А я думал, что сработает, проверил, не работает, обидно. А казалось бы чем отличается вызов формы из таймера или из события :(( Вячеслав Давыденко * Origin: MT-Bank (2:5020/400) |
Выpубить/пеpезагpузить комп? |
Hello Dima. 20 May 04 23:01, you wrote to me: AL>> в msdn, если читать стpаницу до конца DG> Вот блин, может я забыл тебе сказать, что удалил мсдн с винта до лучших DG> вpемён. дык удали еще и компилятор и проблема решена. в конце концов поставь прочто help по api от старого борланда-Си (4.x - 5.x) AL> AL>> станет ясно что она есть только в виндах без scm, т.е. в линейке AL>> 95/98/me DG> А пpо это мне давно сказали. Лучше бы подсказал, как её заменить. что тут тебе без хелпа подсказывать? такая подсказка называется написать за тебя. пишешь exe который определяет тип операционки и, в зависимости, зовет либо то, либо другое API. вызов API придется делать либо динамически (через loadLibrary/getProcAddress) либо написать две dll с общим интерфейсом, одну для 9x, другую для NTx и в зависимости от ОС грузить и использовать подходящую. Anton * Origin: -== Sibkot Mail Station ==- (2:5000/130.84) |
Re: PopupMenu |
From: Alexander Asyabrik Привет, Slaventij. Вы, было дело, писали, 9:41 25.05.04: >> И тем не менее вариант с лейблом у меня не работает, я проверил. S> А я думал, что сработает, проверил, не работает, обидно. S> А казалось бы чем отличается вызов формы из таймера или из события :(( Дык тем, что событие Change лейбла происходит при еще незавершившемся событии Menu_Click, то есть фактически внутри последнего. А таймер выдает свое событие уже _после_ завершения Menu_Click. А вообще искать некую логику в баге бессмысленно. Баг он и есть баг. Hа нашу жизнь еще багов хватит :) Давай с _этим_ заканчивать, ага? -- Alexander * Origin: Talk.Mail.Ru (2:5020/400) |