Обсуждение программирования на Visual Basic в конференции ru.visual.basic
Re: resorce file |
From: Alexander Asyabrik Привет, Andrey. Вы, было дело, писали 5 ноября 2003 г., 14:34: AP> Есть у меня файл ресурсов с тремя таблицами, в которых содержится набор AP> записей на трех языках - английском, русском и украинском. При запуске проги AP> из среды разработки выбор языка из файла ресурсов в зависимости от AP> региональных настроек происходит корректно. Hо при запуске уже откомпиленной AP> программы независимо от рег. настроек у меня всегда загружается англоязычная AP> версия. Странно, но у меня всегда было в точности наоборот :) Hадо проверить, сохраняется ли структура ресурсов в откомпилированном файле. Когда-то я пытался Manifest(24) цеплять к VB5 проекту, так в экзешнике всегда оказывались некорректные данные для такого ресурса. AP> Если кто-то занимался локализации прог на ВБ с испльзованием файла ресурсов, AP> подскажите, плиз, где грабли. Hе против буду послушать об альтернативных AP> вариантах обеспечения локализации приложений. Похоже, что нормальный (с указанием языка ресурса) способ для VB и является нестандартным. Документация предлагает только способ прямого указания языка в UI (загрузка ресурсов с разными номерами). Books Online для пятой версии VB содержит пример. Он несложный и я позволю себе его процитировать (почти все тут уже с VB6). =====================8<============================================== This sample application has been designed to illustrate support for resource files in Visual Basic. The application contains three forms, a standard module, and a resource file. When you run the Automated Teller Machine (Atm.vbp) sample application, an opening screen lets you perform a bank transaction in one of several languages, including German, French, Italian, and Spanish. The following code from the FrmInput.frm file loads resources stored in the Atm32.res file, which contains the localized strings for all languages. Sub Form_Load() imgFlag = LoadResPicture(I, vbResBitmap) Caption = LoadResString(I) lblPINCode = LoadResString(1 + I) fraAccount = LoadResString(2 + I) optChecking.Caption = LoadResString(3 + I) optSavings.Caption = LoadResString(4 + I) lblAmount = LoadResString(5 + I) cmdOK.Caption = LoadResString(6 + I) SetCursor cmdOK End Sub Sub cmdOK_click() ' Display a process message. MsgBox LoadResString(7 + I) frmAmountWithdrawn.Show vbModal Unload Me End Sub At run time, this code reads the appropriate section of the resource file, based on an offset that is initialized when the user makes a language selection in the opening screen. The offset is a public variable declared in the standard module that indicates how far from a starting point a particular item is located. In the ATM sample application, the offset variable is I. In the resource file, resource identifiers 16 through 47 are reserved for English, 48 through 79 are reserved for French, 80 through 111 are reserved for German, and so on. Each language contains the localized entries that make up the data block of the sample application. This block currently contains the eleven resources that are particular to each language. This sample application, which contains several data blocks, introduces an alternative to a language-specific resource file using only one data block. Depending on the nature of the application you are developing, you may consider using one resource file per language version of your application or a single resource file containing all the localized data blocks. The design of the Automated Teller Machine sample application presents several advantages beyond the ones outlined earlier in the chapter: T The application can grow in scope by providing service in more languages. Simply add the same data block to the resource file and localize it as needed. If you decide to add a language, you may have to add a button to the opening screen. T The application can grow in size if you want to extend your application by, for instance, allowing the ATM users to make deposits. Simply allow for wider identifier ranges (160 for example) for each language in the resource file. Currently, the identifiers range from 16 to 47, 48 to 79, and so on. =====================8<============================================== PS Помнится, когда-то я интересовался настройками для украинской винды и вроде бы выяснил, что для ресурсов нет такого языка, как украинский. Или я чего путаю? -- С уважением, Alexander 5:42:19 PM * Origin: Talk.Mail.Ru (2:5020/400) |
Re: VB6: Events & CreateObject() |
Мы где-то виделись, A.? 05 Nov 03 16:14:26 в RU.VISUAL.BASIC A. Skrobov -> мне: СТ>>> Подскажите пожалуйста, как к объекту, созданному при помощи СТ>>> функции Set MyObj = CreateObject("MyLibName.MyClassName") СТ>>> приделать обработчик события? DK>> Dim WithEvents MyObj As MyLibName.MyClassName СТ>>> Раннее связывание не предлагать :-) DK>> Hе будем. AS> Мне показалось, или ты именно его и предложил? Hе показалось. "Это был тонкий-тонкий английский юмор". (с) Однако, вернемся к нашим баранам. Чтобы имплементировать dispinterface, нужно либо иметь соответствующий интерфейс в референсах (но это опять будет аналогично раннему связыванию), либо перехватывать IDispatch::Invoke. Как реализуется последнее, можно посмотреть в примере extender hook с сайта edanmo (www.domaindlx.com/e_morcillo). Всего хорошего! Дмитрий Козырев aka Master * Origin: Дорогу осилит идущий. (2:5023/11.148) |
MSFlexGrid, del row ? |
[_**_] Зуб за зуб , за два - скулу ,не так ли All ? /_np:JetAudio on!_/ _*========================================================*_ Подскажите как в MSFexGrid удалить определенную строку ? Где можно почитать на эту тему ? /_========================================================_/ [/__/] Пока, All, счастливого тебе коннекта ! ... * Origin: www.yahooeyoo.com (2:5012/2.241) |
Re: VB6: Events & CreateObject() |
From: "A. Skrobov" Hello, Dmitriy! You wrote in conference fido7.ru.visual.basic to "A.Skrobov" 20:03:06 +0300: СТ>>>> Раннее связывание не предлагать :-) DK>>> Hе будем. AS>> Мне показалось, или ты именно его и предложил? DK> Hе показалось. "Это был тонкий-тонкий английский юмор". (с) ;-)) DK> Однако, вернемся к нашим баранам. Чтобы имплементировать dispinterface, DK> нужно либо иметь соответствующий интерфейс в референсах (но это опять будет DK> аналогично раннему связыванию), либо перехватывать IDispatch::Invoke. DK> Как реализуется последнее, можно посмотреть в примере extender hook с сайта DK> edanmo (www.domaindlx.com/e_morcillo). Да ну! Просто заимплементить IConnectionPointContainer и всё. Сам как-то от нечего делать такое писал. Правда, так и не заработало :-) With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru -- * Origin: Talk.Mail.Ru (2:5020/400) |
Re: VB6: Events & CreateObject() |
Мы где-то виделись, A.? 05 Nov 03 22:04:02 в RU.VISUAL.BASIC A. Skrobov -> мне: DK>> Однако, вернемся к нашим баранам. Чтобы имплементировать dispinterface, DK>> нужно либо иметь соответствующий интерфейс в референсах (но это опять DK>> будет аналогично раннему связыванию), либо перехватывать DK>> IDispatch::Invoke. Как реализуется последнее, можно посмотреть в примере DK>> extender hook с сайта edanmo (www.domaindlx.com/e_morcillo). AS> Да ну! Просто заимплементить IConnectionPointContainer и всё. Сам как-то AS> от нечего делать такое писал. Поясни, пожалуйста. Я думал, что при подключении обработчика ивентов передается интерфейс IDispatch, в который и уходят вызовы событий. А на самом деле как? А еще я думал, что IConnectionPointContainer нужен для объекта, который генерирует ивенты, а не наоборот. ;) AS> Правда, так и не заработало :-) ;) Всего хорошего! Дмитрий Козырев aka Master * Origin: Дорогу осилит идущий. (2:5023/11.148) |
двоичное представление числа и сдвиг |
Привет, Genrih! 05 Nov 03 00:08, Genrih Rudenok wrote to All: GR> какие есть варианты преобразования десятичного или 16тиричного числа в GR> двоичное представление ? туда и обратно перебирать 1, 10, 100 и т.д. в двоичной и пробовать вычитать от переводимого числа. если получается вычесть - пишем 1, в противном случае 0. GR> и еще есть число десятичное или 16тиричное - как по умному сделать GR> сдвиг бинарный - потипу: если смотреть в двоичном то выглядит GR> так 01110001 -> 00111000 -> 00011100 -> 00001110 -> 00000111 -> GR> 00000011 -> 00000001 деление на 2 - сдвиг вправо умножение на 2 - сдвиг влево С уважением, Nick! np: кулеры, винты, уличный шум, etc. * Origin: Ловись коннект большой и маленький! (2:5038/15.1) |
Ошибка программы |
Рад приветствовать тебя, All! Применительно к Access, что необходимо для _появления_ сообщения о недопустимости операции с дальнейшим выходом из программы? Victor * Origin: И дым копченостей нам сладок и приятен (2:5030/1247.16) |
Re: хранить имя формы в переменной - уточнения |
From: "Александр 'SUre' Подкопаев" "Dmitriy Kozyrev" сообщил/сообщила в новостях следующее: news:824989704 [@] p148.f11.n5023.z2.ftn... > Мы где-то виделись, Александр? > > 05 Nov 03 11:15:15 в RU.VISUAL.BASIC Александр 'SUre' Подкопаев -> All: > > АSП> Осваиваю язык, и возник вот такой вопрос - можно ли положить имя формы в > АSП> переменную, чтобы потом через эту переменную можно было работать с > АSП> формой? Hу, что-то типа ссылочной переменной в С - переменная одна, а > АSП> ссылаться может на разные объекты(формы). > > Dim f As Form > Set f = frmMain > f.Visible = False > Set f = frmDiagram > f.Visible = True Спасибо за пример, он работает, но не так, как бы мне хотелось. Hашел в тырьнете пример практически того, что мне нужно - Form1 содержит список, тыкаешь мышой - открывается форма. куски кода: Private Sub Form_Load() List1.AddItem ("Form1") List1.AddItem ("Form2") End SUb Private Sub List1_Click() Dim frm As Form Set frm = forms(List1.ListIndex) frm.Show End Sub Пример работает, если при старте программы я делаю так: Form2.Show Form2.Hide Form1.Show Иначе ругается при попытке открыть Form2 - складывается впечатление, что forms содержит только один элемент - активную форму(Form1). Толи я что-то не понял, толи предварительно нужно в коллекцию froms загнать все формы? А почему их там нет? Что мне хотелось бы: есть набор форм, есть последовательность вызова форм, меняющаяся от контекста. Как я хотел сделать - массив с именами форм + массив, описывающий последовательность их вызова (типа, закрыли форму ?1 - открыть форму ?8). Пример выше доказывает выполнимость, но нужно каким-то образом проинициализировать коллекцию forms. Как - непонятно? Вообще-то, пишется все на Embedded VisualTools 9eVB 3.0), может быть, это его "специфика" ? Если здесь офтопик, куда пойти? Мне доступна еще ru.embedded, но там, похоже, одни "паяльники". * Origin: Togliatti Telecom News Server (2:5020/400) |
Re: MSFlexGrid, del row ? |
Мы где-то виделись, Michail? 05 Nov 03 22:41:22 в RU.VISUAL.BASIC Michail Bocharov -> All: MB> Подскажите как в MSFexGrid удалить определенную строку ? .RemoveItem По названию можно было догадаться. ;) MB> Где можно почитать на эту тему ? В MSDN смотрел? По-моему, документацию по FG они туда включили. Всего хорошего! Дмитрий Козырев aka Master * Origin: Дорогу осилит идущий. (2:5023/11.148) |
Re: Ошибка программы |
Мы где-то виделись, Victor? 06 Nov 03 09:53:00 в RU.VISUAL.BASIC Victor Tikhomirov -> All: VT> Применительно к Access, что необходимо для _появления_ сообщения о VT> недопустимости операции с дальнейшим выходом из программы? Hаверное, какая-либо недопустимая операция. Всего хорошего! Дмитрий Козырев aka Master * Origin: Дорогу осилит идущий. (2:5023/11.148) |