Форум » GUI » IDE8 » Ответить

IDE8

Новичок: Можете на простом примере показать: 1. На примере TEXTBOX вводились символы UTF8 2. На примере LABEL - соответственно выводились

Ответов - 125, стр: 1 2 3 4 5 6 7 All

SergKis: Новичок пишет Можете на простом примере показать: 1. На примере TEXTBOX вводились символы UTF8 2. На примере LABEL - соответственно выводились MiniGui не unucod-ная. Делаем казахский и русский фонты по аналогии [pre2] DEFINE FONT Arial FONTNAME App.FontName SIZE App.FontSize CHARSET 186 // BALTIC_CHARSET DEFINE FONT ArialBold FONTNAME App.FontName SIZE App.FontSize BOLD CHARSET 186 // BALTIC_CHARSET DEFINE FONT ArialRu FONTNAME App.FontName SIZE App.FontSize CHARSET 204 // RUSSIUN_CHARSET DEFINE FONT ArialRuBold FONTNAME App.FontName SIZE App.FontSize BOLD CHARSET 204 // RUSSIUN_CHARSET ... @ 10,10 TEXTBOX text_1 HEIGHT 24 WIDTH 200 ; FONT 'ArialRu' SIZE 10 MAXLENGTH 30 ; ON CHANGE ( This.label_1.Value := This.Value ) @ 40,10 LABEL label_1 WIDTH 200 HEIGHT 24 VALUE space(30) ; FONT 'ArialRu' [/pre2]

alkresin: Если нужен UNICODE и корректное использование utf8, используйте HwGUI ), собрать его надо с флагом UNICODE - раскомментировать соответствующие флаги в hwgui.hbp или в батниках.

Новичок: ясненько... спс, сперва выкручусь фишками, потом попробую HwGUI или давайте все вместе и дружно перейдем на utf32 и будем дальше плодить проблемы :)


Новичок: и вообще... все "сильные" страны мира всего стараются пихать свои языки(в том числе алфавит) в многие народности... у нас международный язык общения (евразийский континент - постсоветское пространство) РУССКИЙ (КИРИЛЛИЦА) и Москва думает ток свою "геополитику", как в это время нам навязывают... Английский, Французский, Китайский, ... уже и массово и Корейский языки (соответственно культура, ценности, миграция... РАБОТА!) /*Далее балабольство*/ Ясно дело - поколение "80-х" - последнее поколение РУССИФИКАЦИИ, и с каждым годом остается НАС все меньше и меньше ! (*воспитали целое поколение людей "90-х" патриотов-НАЦИОНАЛИЗАЦИИ при распаде СССР, - которое с треском провалилось ! которые не нужны ни своей стране, а в чужой тупо - незнают МЕЖДУНАРОДНЫЕ языки общения, не говоря уже о культуре, ценностях, ... - короче приезжие "черножопые", в том числе, те же этнические славяне - ну само собой, сильные специалисты из этого списка - побелее - "СЕРОЖОПЫЙ" жук ) На смену прибывает НОВОЕ ПОКОЛЕНИЕ ("2000+") АнглоФранкоИспаноЧИРИКЧИРИКфикации, которые даже 2 слова на РУССКОМ связать не могут, не то что написать черным по белому !!! Помогают убыстрить ВОЛОНТЕРЫ с данных стран, причем большинстве БЕСПЛАТНО, или символически платно, но с условием что всякими ЛьГОТАМИ, ТРУДОУТРОЙСТВАМИ, и т.д. вернут в 100 раз больше (ха! в том и дело - восполняют!) Короче ВАТИКАНздец ! С мертвым языком ЛАТЫНЬ - говорят ток в Ватикане (страна Ватикан в стране). Будет МОСКВАздец ! С возможным мертвым языком РУССКИЙ - будут говорить ток в Москве (Страна Москва в стране) остальные на ЧИРИКЧИРИК с бывшими гражданами ЧИРИКстана, остальных малых народностей повторится история индейцев (ха! не предков, а потомков кочевников) - на прерии в Сибирь! - для эксперимента - человек(народы) в условиях ледникового периода :) - и всех обзовут Ярангами ! Ну правильно, у ЧИРИКОВ итак более 65000 иероглифов, нехватало еще столько же рисовать :) И будут у этого народа Яранги много легенд, как в далекие года - их называли, к примеру (У окраины) - уОкраинцами -или коротко - Украинцами - защищали западные границы великой Московии, и напали тогда проклятые орды Варваров с железными конями, много дней и ночей сражались всей Московией - и победили ! Но пришел коварный невидимый враг в виде птиц голосистых, с болезнями птичьего гриппа, и покосила эта болезнь всю Московию, и бежали мы в края далекие и холодные... По приколу - Русские национальные блюда - Пельмени (состав: тесто, жаренные кузнечики, заправленные соком из свежевыжатых червей, соль, вода, ...), Манты (те же пельмени, ток поболя размерчиком, и вместо кузнечиков, жаренные летучие мыши) и будут доказывать что сам Петр-I перед битвой сфарганил - и докажут ! :) И будда на кресте завещал своим потомкам из ЧИРИКстана - "За дИржаву РЮСЬ! За мИАтЮшкЮ зИмлЮ ! чирикчирик вообщем", и окажется Славяне, это не Славяне, а белое племя из ЧИРИКЧИРИКстана, и что США в далекие-далекие года до нашей эры разъединили племя ЧИРИКОВ ! О чём Я ?... Ах да... ! /* Конец балабольства */ Может предложить кодовую страницу 1251 (866, ...), все-таки подправить - включить символы народностей СССР использующих кириллицу (их не особо много) в порядке алфавита на базе русского языка (33 буквы +, вложить между символами русского алфавита, и порядок следования символов русского языка сохранится, просто некоторые сдвинутся и других языков порядок следования обеспечен - для индексации), или к примеру создать страницу 1266 или своим именем обзови, будем помнить "Семенов-Тян-Шаньского или "Пржевальского" :). *Кстати,в Киргизии похоронен Пржевальский - около озера вроде. В этом случае, многие Республики, опять вернутся на кириллицу. (да хотя бы что основа это тюрский язык, русский в том числе) То есть если патриоты России, может хватит думать в рамках 33 букв? Начни с этого проекта, создай кодовую страницу к примеру EUROASIAN, и тогда с 256 символами обойдемся, к примеру нах псевдографика ? *я бы с удовольствием, поверь сильно занят элементарным выживанием :)

Pasha: 1. Так у вас латинизация уже, или только в процессе ? 2. Прицепить к харбору новую 8-ми битную кодировку, хоть кириллическую (расширение 1251), хоть латиницу, можно. Только скажите, какую, с сопоставлением с unicode. Но если скажем minigui не поддерживает unicode, это для печати ничего не даст. Нужна еще соответствующим образом локализованная версия windows В харборе есть свои средства печати в библиотеке hbwin, но там нет preview, что весьма неудобно.

SergKis: Pasha пишет Но если скажем minigui не поддерживает unicode, это для печати ничего не даст. Нужна еще соответствующим образом локализованная версия windows VO то же не unicode (есть и локализованная латышская windows), но печать работает VOшная еще с версии 2.0 и работала с выводом программ clipper. Фонты на charsetах. Строка вывода превращается в массив слов\букв с соответствующим фонтом\Charset. Фонты, создаются парно (1251, 1257) с 1-9 штук (задавать можно извне перед печатью формы), 0 фонт базовый, осн. печать. Внутри ссылка по номеру фонта, т.е. слова\буквы - к номеру фонта (элемент массива). Кодировка базы LV866, кодировка текстовых файлов (всех) Utf8, Все тексты программ проектов, т.к. не было редактора с LV866, в utf8, все тексты контролов (надписи label) вынесены в ini, cfg файлы utf8 (можно в ресурсы, но соответствия перевода у клиента лат.\рус может быть разным) правят для конкретного клиента в ini\cfg как кому нужно. И сейчас вся печать для hb программ работает через VO-шную версии 2.7

SergKis: PS hb программы - это MiniGui 2а варианта, основная переведена в unicod (v.m 2.07), вспомогательная текущая (работа как показывал в примере с Charset)

Pasha: Латышский язык и латышские кодовые страницы: https://cloud.mail.ru/public/5Myf/3sT2eJtFJ гляньте, нет ли косяков. В кодировку я добавил четыре отсутствующих в латышском алфавите латинских символа.

SergKis: Pasha Правка [pre2] /* Month names */ "Janvāris", "Februāris", "Marts", "Aprīlis", "Maijs", "Jūnijs", "Jūlijs", "Augusts", "Septembris", "Oktobris", "Novembris", "Decembris", /* Day names */ "Svētdiena", "Pirmdiena", "Otrdiena", "Trešdiena", "Ceturtdiena", "Piektdiena", "Sestdiena", [/pre2] Латышские гарумзиме (буквы) на месте. Все похоже.

Pasha: Спасибо, поправлю. Добавлю еще до кучи эстонский, и предложу в devlist

SergKis: Pasha Это снимет проблемы "чистых" языковых экранов, но смешанные данные это фонты с charset (основная работа) для gui

Новичок: SergKis и интересно и какая CHARSET для среднеазиатских языков ? *к примеру для балтийских языков есть и кодовая страница 1257

Новичок: Короче, нужна корректная работа UTF8.

Новичок: *Для среднеазиатских языков - Казахский - Киргизский - Узбекский - Таджикский - Туркменский на основе Кириллицы

Новичок: на примере, в других системах: достаточно указать charset=utf8 присобачить требуемый язык lang="код языка" и всё

SergKis: Новичок пишет Короче, нужна корректная работа UTF8. Посмотрел, кодовая страница казахского отсутствует в стандарте windows (Dos как бы есть) кроме Utf8. Тогда вариантов не так много, на мой взгляд (наш опыт) - варианты WVT и базы Utf8 GUI - Если dos кодировка актуальна (+ базы от clipper остаются как были), то hb unicode + ф-и перекодировки extern char _bk_Uni2Dos_( TCHAR ch); extern TCHAR _bk_Dos2Uni_( char ch); + перевод hmg на них, что в целом трудоемко - взять HwGui unicode базы Utf8 и пробовать окна, контролы (browse) + xml настройки на кодировку - работа ActivX с IE с движком http://w2ui.com/web/demo/grid или другие есть варианты - Вариант, возможно, самый интересный) http://clipper.borda.ru/?1-3-0-00000628-000-0-0-1565852051 (не смотрел еще) - Была HtmLayout.dll от https://terrainformatica.com (dll убрали в 2010 и остался только Sciter) движок html+js подобный язык, возможно заинтересует. На dll сделанные задачи (html страницы) работают до сих пор (загрузка grid таблицы ~10000-15000 записей) ~3-5 сек. Сервер Apache, к примеру, не нужен был для выхода по url на какой либо сайт

SergKis: PS Вариант с WVT можно использовать вполне, т.к. к примеру, через DosBox со смартфона работает.

Новичок: Нужно, хотя бы, чтобы на КОНТРОЛАХ отображались символы с UTF8 при подключении: #xtranslate SET CODEPAGE TO UNICODE => Set (_SET_CODEPAGE, "UTF8") REQUEST HB_CODEPAGE_UTF8 SET CODEPAGE TO UNICODE а базы бы оставались на 866. Создал бы правило соответствия некоторых символов UTF8 с некоторыми символами 866, то есть при чтении с базы переводил бы эти символа 866 на UTF8 c выводом на контролы, и при записи наоборот с UTF8 на 866 по соответствию. (*Для начала) Конечно, далее возникал вопрос - preview, печать, индексация - ну думаю эти вопросы решили бы. А при операциях со строками - производил бы без правил соответствия ( на 866) и после - результат переводил бы на UTF8 Следовательно, главный вопрос - ОТОБРАЗИТЬ НЕКОТОРЫЙ СИМВОЛ UTF8 НА КОНТРОЛАХ :)

Новичок: Для начала хватило бы и этого. Пока со временем проект не переведут на UTF8.

Новичок: что за WVT ?

SergKis: Новичок Попробуйте hb+HwGui unicode сборки и тестовую Utf8 базу и контролы (browse, button, label) код текстов prg файла Utf8 Страница Utf8, для dbf codepage не ставить (данные будут как прочитаны) Пример окна с контролами сбацать Если пойдет, то можно делать перекодировку из 866 в utf8 и обратно и применять decode перед контролом и encode перед записью в dbf

SergKis: Новичок пишет что за WVT ? Драйвер экрана (не консоль). Посмотрите примеры в harbour\test поискав WVT в prg файлах.

SergKis: PS Возможно, alkresin, даст больше рекомендаций по HwGui, т.к. это его продукт

alkresin: SergKis пишет: Возможно, alkresin, даст больше рекомендаций по HwGui, т.к. это его продукт Если будут вопросы - обращайтесь. Я использую юникодную сборку HwGUI в некоторых своих приложениях, проблем вроде нет. Например, http://www.kresin.ru/down/notes.zip - программа для заметок, которой я активно пользуюсь. Там в тестовой безе несколько китайских иероглифов в тексте.

Pasha: Новичок Можно ли использовать 8-ми битную казахскую кодировку KZ-1048, или СТ РК 1048—2002 (это расширение cp1251). Насколько она распространена ? Эта кодировка будет использоваться совместно с utf8 Проверьте пожалуйста казахский алфавит: АӘБВГҒДЕЁЖЗИЙКҚЛМНҢОӨПРСТУҰҮФХҺЦЧШЩЪЫІЬЭЮЯ аәбвгғдеёжзийкқлмнңоөпрстуұүфхһцчшщъыіьэюя и название месяцев и дней недели: Қаңтар Ақпан Наурыз Сәуір Мамыр Маусым Шілде Тамыз Қыркүйек Қазан Қараша Желтоқсан Жексенбі Дүйсенбі Сейсенбі Сәрсенбі Бейсенбі Жұма Сенбі

Новичок: HwGUI, несколько вопросов: а) учтено работа с: 1.Excel 2.Word 3.XML 4.PDF 5.клиент-серверная 6.мобильная для начала в дальнейшем понадобятся и остальные: Socket, SQlite, MySQl, Postgres,... и т.д. б) сильно различаются от MiniGUI (синтаксис) в) что используется PREVIEW (на печать; UTF8)

Новичок: *ну во-первых,я не казах, и не с Казахстана в данный момент стоит вопрос про среднеазиатский регион...

SergKis: Новичок пишет HwGUI, несколько вопросов: ... для начала Перечисленное относится не к hwgui, а hb, конкретнее подкаталог contrib, т.е. libы сборки hb (они же и в MiniGui). сильно различаются от MiniGUI (синтаксис) HwGui - объекты, синтаксис похож в плане препроцессорных команд ch файлов Смотрите конкретно http://www.kresin.ru/ Ставьте, см. примеры и пробуйте. На чем сделаны, работающие сейчас программы ? Если clipper, может стоит перевести на hb unicode для начала ?

SergKis: Новичок пишет в данный момент стоит вопрос про среднеазиатский регион... Хотелось бы знать реализацию работающих программ по кодовым страницам. Если вы обратили внимание на содержимое lv.7z архива от Pasha, то увидели, что кодировка l_lv.c, l_lv.h utf8. Это значит, что кроме utf8 работы с языками, на hb можно сделать таблицы национальных языков, даже если их нет в стандарте windows. Более того, можно для hb unicode сделать Dos таблицы, как LV866, содержащей Лат., Рус., Англ. языки. То что я писал про ф-ии перекодировки Dos2Uni, Uni2Dos это атавизм из версии hb 2.0, перешедший в 3.2 на msvc 9 версии. При переходе на msvc 2017, мой товарищ, уже сделал LV866 по правилам и в стандарте hb. Правда я еще не переходил на работу с этой версией C. Так что вопрос от Pasha Можно ли использовать 8-ми битную казахскую кодировку KZ-1048, или СТ РК 1048—2002 (это расширение cp1251). Насколько она распространена ? по делу, т.к. если вас интересуют "среднеазиатские" языки, то кроме вас никто не скажет (не выяснит) правильные названия месяцев и дней дели для организации нац. таблиц.

Новичок: *использую Harbour MiniGUI (dbf-866; Windwows-1251; lang:RU) c Клипера давно иммигрировал (просто больше времени уделял другим СУ*БД и языкам, на Harbour держу немало проектов, - не терять clipper'навыки, да и к данным проектам идеально подходит - самый главный плюс на моей практике- сделал проект на Harbour (причем очень быстро, подручными средствами) , установил и... прекрасно живет, и практически не жалуется, возникающие ошибки не критичны(в основном обходится с записью на лог ошибок ), специального администрирования не требуется, легковесная(+в 100-и, иногда 1000-и раз требуется меньше места), что там с ОС происходит - плевать - переустановили ОС(без моего участия) и дальше погнали - класс одним словом (кроме одного раза - когда в многопользовательском режиме, происходил сбой по разным причинам - то в базе DBF, посреди данных, впихивалась большая куча записей абракадабры - поставил контрольное поле корректности записи, и при загрузке автоматически удалял абракадабру при сбоях, в дальнейшем убрал эту функцию, видать этот баг исправили... или у нас энергоснабжение стабилизировалась ) *конечно последовательно, в конкретный момент встал вопрос UTF8 - и хотя бы решить малой кровью, без глобальных переделок *возможно было бы легче, если бы изучил исходники и проект Harbour в целом изнутри - зная себя, перелопатил бы (перемудрил бы) во что-то другое, поэтому не лезу "чем дальше лес, тем больше дров"... Пришел к выводу: - глобальная переделка займет слишком много времени + с учетом граблей (можно за это время перекинуть на другие БД и языки - потеря рентабельности) - на данный момент лучше всего установить правила соответствия кодовых страниц - по-символьно (типа как Pasha предлагает), соответственно с функциями кодирования, декодирования Опять же прихожу к выводу - Требуется отображение символов UTF8 на контролах *кто-нибудь, отключите проверку диапазона символов на контролах и вывода '?' вместо них или это происходит системно* (дык, тогда дайте понять этой системе - что он не прав ) ? так как пробовал подключать шрифты поддерживающие UTF8, проверял на cmd chcp 65001 (консоль тянет UTF8 - *у мя windows 10, cp 1251, с подключенными всеми среднеазиатскими языками), эти же шрифты пробовал на других своих системах (отображает UTF8) и т.д., только здесь упорно рисует '?' ну ёпта (сорян мужики, до ассемблера руки не дошли - незнаю)

SergKis: Новичок пишет использую Harbour MiniGUI (dbf-866; Windwows-1251; lang:RU) Требуется отображение символов UTF8 на контролах Повторю, MiniGui однобайтная, как и hb сборка с ней. И если собрать hb unicode можно, установив ключ UNICODE, то hmg C тексты надо переводить на работу в 2х вариантах, включая unicode. Это трудоемко и требует времени, особенно в отладке. Можете это сделать, помочь Григорию ... делайте. А так только HwGui имеет вариант сборки unicode С нац. языками, как предлагает Pasha можно использовать и MiniGui

Новичок: ладно попробую дедовским способом) подкл на Windows: Выполнить - eudcedit - откроется Редактор личных знаков Далее, Правка - Копировать знак.. - Выберу любой символ - Поизголяюсь ! Получится новый символ Далее, Файл - Связи шрифтов - Для всех шрифтов(по умолчанию) - Сохранить Открываю Таблицу символов в самый низ там появится Все шрифты (Личные знаки), выберу этот символ - Выбрать - Копировать Открываю программу Hb MiniGui, контроль TEXTBOX, жму Shift+Insert, и оп пля !!! Этот символ ВСТАВЛЕН ! с кодом U+E000, и так далее... Можно же.

Новичок: на Клиппере, типа также делал, рисовал символ псевдографикой, присваивал соответствие к некоторому неиспользуемому символу, и на принтере(ранее матричные), также эту псевдографику впихивал (командами принтера через клиппер SAY...TO PRINT), и всё... на тебе любые языки и символа)

SergKis: т.е. символы узбекского, казахского, киргизского, туркменского языков засунете в одну таблицу, сделаете таблицу перекодировки 866 -> <таблица>, месяцы, дни недели аналогично ?

Новичок: я бы с самого начала так бы сделал, тем более Windows API эти символа поддерживаются автоматически и отображаются корректно (практически везде на Windows) просто по сравнению с DOS временами, здесь надо кучу шрифтов перелопатить(Arial, Courier, ...), переопределить правила индексации (что приведет к замедлению), а там Upper, Lower, дни недели, месяца, ... - особо не составит труда ранее программы были обособленными, проблем не возникало, на текущий момент без стандартов, все время придется ручками допиливать, ладно 1-2 задачи, но со временем этих задачи плодятся, и как раньше "а! пока сделаю так..." не прокатит. Поэтому искал помощи, как-то связать с UTF8, чтобы уже забыть, не париться в будущем...

Новичок: *ну что же, будем ждать - когда Hb + MiniGUI на UTF8 перепилят) спс всем

alkresin: Новичок пишет: HwGUI, несколько вопросов: а) учтено работа с: 1.Excel 2.Word Вы немного запутались. GUI-библиотеки ( Fivewin, HwGUI, MiniGUI, ... ) обеспечивают графический интерфейс. Работа с Word, Excel и пр. - это частный случай использования Харборовского модуля для OLE и COM. Вы можете работать с любыми (или почти с любыми) COM-объектами, будь то MS Office или 1С хоть из консольной программы, GUI здесь ни при чем. 3.XML Вообще-то, аналогично предыдущему пункту - в Harbour есть модуль для XML. Но HwGUI содержит свою XML библиотеку, она, кстати, может использоваться отдельно, без остального функционала. Я писал ее, когда в Harbour своих средств для этого не было, а в HwGUI она потребовалась для дизайнера форм и отчетов. 5.клиент-серверная Вы наверное, имеете ввиду поддержку клиент-серверных БД? Это опять не к GUI-библиотеке. Harbour-программа c HwGUI будет работать с клиент-серверными БД, поскольку это обеспечивают соответствующие Harbour-библиотеки. 6.мобильная В смысле, под Андроид и iOs? Для Андроид, кстати, я частично портировал HwGUI - это называется HDroidGUI, но давно забросил - просто потому что сам не пользуюсь смартфонами. Socket, SQlite, MySQl, Postgres,... и т.д. То же самое, это все Harbour, он это поддерживает. Кстати, та программа для заметок использует именно sqlite. б) сильно различаются от MiniGUI (синтаксис) Синтаксис, связанный с реализацией GUI-элементов, естественно, отличается. Насколько - не могу сказать, я с синтаксисом MiniGUI мало знаком. Отличия, наверное, заметные, т.к. HwGUI основан на классах - так, как они реализованы в Harbour, а MiniGUI использует массивы и имитирует объектно-ориентированный синтаксис с помощью препроцессорных директив. в) что используется PREVIEW (на печать; UTF8) Preview в модуле печати есть. Utf8 там, конечно, поддерживается, как и везде в HwGUI.

SergKis: Новичок пишет использую Harbour MiniGUI (dbf-866; Windwows-1251; lang:RU) Т.е. сейчас национальных азиатских языков нет совсем (кроме русского) и ввода с клавиатуры языковых данных в MiniGui нет ? Есть ли 8 битные таблицы национальных азиатских языков в работе и какие ? Или вы то же не в курсе ? ну что же, будем ждать - когда Hb + MiniGUI на UTF8 перепилят) Если и будут пилить, то в unicod

Pasha: Новичок пишет: в данный момент стоит вопрос про среднеазиатский регион... Узбекские и туркменские товарищи еще в 90-е перешли на латиницу, так что их это не касается. Нурсултан Абишевич недавно сделал такой же подарок Казахстану, ситуация там непонятна. В Киргизии и Таджикистане до сих пор используется кириллица. Для Казахстана есть свой стандарт кодировки для кириллицы, расширение 1251, но трех дополнительных киргизских букв там нет. Есть еще какая-то кодировка Cyrillic Asiam или Windows PT CP 154, разработанная какой-то фирмой. Но насколько она распространена и используется ли вообще - сказать не могу. Так что вопрос 8-ми битной кодировки остается открытым.

ММК: Новичок пишет: *ну что же, будем ждать - когда Hb + MiniGUI на UTF8 перепилят) спс всем Да не надо ждать. Если делается не разовое латание дыр, не курсавая то используйте FiveWin. Это проф.инструмент и поэтому не только графический интерфейс . Достаточно много своих функций и решений. Харбор используется , как подмножество. UTF8 поддерживается. Т.е. Хинди работает :) несколько вопросов: а) учтено работа с: 1.Excel 2.Word 3.XML 4.PDF Учтена. 5.клиент-серверная Да 6.мобильная для начала Не ясен вопрос. На всякий случай-есть сборки под все платформы. Если это планшет, телефон.... с виндой , то стандартный FW поддерживает "палец" :) Но сегодня гораздо больший интерес вызывае mod_harbor в дальнейшем понадобятся и остальные: Socket, SQlite, MySQl, Postgres,... и т.д. Работает. Кстати это не только харбор. Точнее все гораздо смешнее , если хотите шире и глубже( это отностся и к перечисленному выше):) Нужен нормальный бровс и он есть. Нет разницы с DBF идет работа или SQL. А можно эту разницу и учитывать ( формировать SQL запросы и т.д.) так как синтасис это позволяет. Плюс различные доработки в этой области . Например чисто своя работа ( без сторонних библиотек) с MariaDB / MySq . Кстати Языки, поддерживаемые сервером MySql: по умолчанию английский, но они также могут отображаться на любом из нескольких других языков: чешский, датский, голландский, эстонский, французский, немецкий, греческий, венгерский, итальянский, японский, корейский, норвежский, норвежский- Нью-Йорк, Польский, Португальский, Румынский, Русский, Словацкий, Испанский или Шведский. б) сильно различаются от MiniGUI (синтаксис) Не сказал бы. FiveWin поддерживает несколько, поэтому можно выбрать для себя удобный. На мой взгляд проще и прозрачней чем MiniGUI в) что используется PREVIEW (на печать; UTF8) Варианты есть разные начиная от встроенного генератора отчетов...

alkresin: ММК пишет: Если делается не разовое латание дыр, не курсавая то используйте FiveWin. Вообще-то, вы только-что сказали, что продукт труда большинства здесь присутствующих - это уровень "курсавых". Хочется надеяться, что это оговорка сгоряча, в пылу спора, но все же надо как-то следить за языком. Если по сути, Fivewin, безусловно, солидный продукт с уже более чем 25-летней историей, и набор функций его Windows-версии, несомненно, выше, чем у всех других Harbour GUI-библиотек. Но окошки и "контролы" он делает те же самые и качество конечных приложений зависит не от используемого GUI, а от разработчика.

rvu: SergKis пишет: DEFINE FONT Arial FONTNAME App.FontName SIZE App.FontSize CHARSET 186 // BALTIC_CHARSET DEFINE FONT ArialBold FONTNAME App.FontName SIZE App.FontSize BOLD CHARSET 186 // BALTIC_CHARSET DEFINE FONT ArialRu FONTNAME App.FontName SIZE App.FontSize CHARSET 204 // RUSSIUN_CHARSET DEFINE FONT ArialRuBold FONTNAME App.FontName SIZE App.FontSize BOLD CHARSET 204 // RUSSIUN_CHARSET ... @ 10,10 TEXTBOX text_1 HEIGHT 24 WIDTH 200 ; FONT 'ArialRu' SIZE 10 MAXLENGTH 30 ; ON CHANGE ( This.label_1.Value := This.Value ) @ 40,10 LABEL label_1 WIDTH 200 HEIGHT 24 VALUE space(30) ; FONT 'ArialRu' Если я так определю фонты - DEFINE FONT Arial FONTNAME App.FontName SIZE App.FontSize CHARSET 204 // RUSSIUN_CHARSET DEFINE FONT ArialLa FONTNAME App.FontName SIZE App.FontSize CHARSET 186 // BALTIC_CHARSET то могу потом писать так? - @ 40,10 LABEL LABEL_002 WIDTH 1000 VALUE probatxt FONT 'ArialLa' У меня не получается. В probatxt загнал латвийское слово, на выходе получил обычный кракозябр вместо š. Или чего-то не хватает или я вообще что-то делаю не так.

SergKis: rvu пишет В probatxt загнал латвийское слово, на выходе получил обычный кракозябр вместо š. Надо убедиться, что в файле именно лат. кодировка одна из 2х (в hb добавились, ранее и не было) HB_CODEPAGE_LV775 - Dos кодировка HB_CODEPAGE_LVWIN - Windows кодировка т.е. REQUEST HB_CODEPAGE_SVWIN ; HB_CDPSELECT( "LVWIN" ) или REQUEST HB_CODEPAGE_SVWIN ; HB_CDPSELECT( "LV755" ) и AlertInfo(hb_memoread(".\proba.txt")) дадут показ лат. слова или не дадут Я забросил пробы с языками в тек. версии hmg и вернулся к старой unucode версии, т.к. в наших базах реально пишут фразы со смешанными словами на языках, т.е. часть на лат., часть на рус. - чего больше зависит от того, к примеру, для кого вых. форма. Пример, ранее представленный, работал только с тсб, где фонты исп. по handle. До Label у меня дело не дошло. Попробуйте вариант выше, по идее должен получится

SergKis: SergKis пишет REQUEST HB_CODEPAGE_SVWIN Сори, не исправил после copy+paste, надо REQUEST HB_CODEPAGE_LVWIN REQUEST HB_CODEPAGE_LV775 ; HB_CDPSELECT( "LV775" )

rvu: SergKis пишет: и вернулся к старой unucode версии Т.е. она не на Минигуи?

rvu: SergKis пишет: надо REQUEST HB_CODEPAGE_LVWIN REQUEST HB_CODEPAGE_LV775 ; HB_CDPSELECT( "LV775" ) Вот интересно, у меня программа с русскими надписями, написана в кодировке 1251, убрал то, что у меня было, вставил латвийскую, т.е. так: REQUEST HB_CODEPAGE_LVWIN *SET LANGUAGE TO RUSSIAN *SET CODEPAGE TO RUSSIAN И ничего не изменилось. Надо кодировку самого текста программы менять? Или что делать?

SergKis: rvu посмотрите i_lang.ch #translate SET LANGUAGE TO RUSSIAN => _HMG_LANG_ID := ' ' ; REQUEST HB_LANG_RU ; HB_LANGSELECT( "RU" ) ; InitMessages() ... #translate SET LANGUAGE TO RUSSIAN => _HMG_LANG_ID := ' ' ; REQUEST HB_LANG_RUWIN ; HB_LANGSELECT( "RUWIN" ) ; InitMessages() ... #ifdef __XHARBOUR__ #translate SET CODEPAGE TO RUSSIAN => REQUEST HB_CODEPAGE_RUWIN ; HB_CDPSELECT( "RUWIN" ) #else #translate SET CODEPAGE TO RUSSIAN => REQUEST HB_CODEPAGE_RU1251 ; HB_CDPSELECT( "RU1251" ) #endif для лат. надо аналогично REQUEST HB_CODEPAGE_LVWIN, HB_LANG_LVWIN ... _HMG_LANG_ID := ' ' HB_LANGSELECT( "LVWIN" ) HB_CDPSELECT( "LVWIN" ) ...

SergKis: PS Это должна быть кодировка 1257

rvu: SergKis Ну хорошо, допустим, я сделаю программу в латвийской кодировке и смогу сделать в ней русский контрол. Хотя у меня задача в русской программе сделать иноязычные контролы, в первую очередь немецкий. Поэтому и старался в 1251 вписывать другие фонты. SergKis пишет: Все тексты программ проектов, т.к. не было редактора с LV866, в utf8 Может быть текст самой программы надо с 1251 в utf8 перевести? А вся контролы, в т.ч. и русский делать фонтами, как у вас?

SergKis: rvu пишет Может быть текст самой программы надо с 1251 в utf8 перевести? Не получится, скорее всего, hb+hmg однобайтные. С лат. яз. не получается, т.к. валится Error BASE/1303 Argument error: __HB_LANGSELECT Args: [1] = C LVWIN.RU1251 Текст prg такой (файл "test.txt" utf-8 кодировка с BOM)[pre2] REQUEST HB_CODEPAGE_LVWIN #include "hmg.ch" FUNCTION Main() Local cFile := "test.txt", cTxt, cBuf //SET CODEPAGE TO RUSSIAN //SET LANGUAGE TO RUSSIAN //DEFINE FONT DlgFont FONTNAME "Tahoma" SIZE 16 CHARSET 186 // BALTIC_CHARSET HB_LANGSELECT( "LVWIN" ) // валится тут HB_CDPSELECT ( "LVWIN" ) cBuf := hb_memoread(cFile) cTxt := hb_StrToUtf8(subs(cBuf, 4)) AlertInfo( cTxt ) Return [/pre2] т.е. прочитать лат. яз текст такой (в utf-8) NEMATERIĀLIE IEGULDĪJUMI NEMAT.IEG.VĒRT.NORAKST.DAĻA ĒKAS, BŪVES, ZEMES GABALI PAMAATLĪDZEKĻI перевести в lvwin и показать => не выходит. Попробуйте с немецким[pre2] SET LANGUAGE TO GERMAN SET CODEPAGE TO GERMAN cBuf := hb_memoread(cFile) cTxt := hb_StrToUtf8(subs(cBuf, 4)) // или текст на немецком не в utf-8 возьмите AlertInfo( cTxt ) [/pre2] Если получится, тогда пробуйте с charset и russian установкой

SergKis: SergKis пишет Если получится, тогда пробуйте с charset и russian установкой Вот что получилось[pre2] REQUEST HB_CODEPAGE_RU1251 #include "hmg.ch" FUNCTION Main() Local cFile := "test.ru", cTxt, cBuf SET CODEPAGE TO GERMAN //RUSSIAN SET LANGUAGE TO GERMAN //RUSSIAN DEFINE FONT DlgFont FONTNAME "Tahoma" SIZE 16 CHARSET 204 // RUSSIAN_CHARSET //DEFINE FONT DlgFont FONTNAME "Tahoma" SIZE 16 cBuf := hb_memoread(cFile) cTxt := hb_Utf8ToStr(subs(cBuf, 4), "RU1251" ) //cTxt := hb_Utf8ToStr(subs(cBuf, 4) ) AlertInfo( cTxt + CRLF + "CDP = "+hb_CdpSelect() ) Return Файл test.ru кодировка utf8 с BOM, содеримое Привет ! Проба текста RU1251. [/pre2]

rvu: А чтобы показать немецкий текст я должен написать что-то, типа этого? - Пишу по аналогии: Local cFileDE := "test.de", cTxtDE, cBufDE cBufDE := hb_memoread(cFileDE) cTxtDE := hb_Utf8ToStr(cBufDE,'DEWIN' ) AlertInfo(cTxtDE) В файле test.de - über die Straße Но это не работает. Вместо ü русский ь. Вместо ß русское Я.

rvu: SergKis пишет: Может быть текст самой программы надо с 1251 в utf8 перевести? Не получится, скорее всего, hb+hmg однобайтные. Текст программы записал в utf8. А для чего у вас стоит REQUEST HB_CODEPAGE_RU1251? Изменил на REQUEST HB_CODEPAGE_DEWIN, ничего не изменилось. Вообще такое ощущение, что программа у меня только с русским языком дружит: SET CODEPAGE TO SPANISH SET LANGUAGE TO SPANISH AlertInfo(hb_Utf8ToStr('Ññ',"ESWIN")) // неправильно показывает AlertInfo(hb_Utf8ToStr('Проба текста',"RU1251")) // всё работает

SergKis: rvu пишет Текст программы записал в utf8. hb в hmg поставке однобайтный, думаете он понимает prg в utf8 ? У меня тексты языковые вынесены вне текстов prg и в кодировке utf8, вся работа в dos кодировке lv866, содержит 3и языка. До редактора hdedit (своя сборка с lv866) prg были для akelpad в utf8, прогр. проекта для сборки перекодировала в однобайтный вариант (в каталог сборки) и потом работает сборка hb. Такая схема с версии hb 2.0 работала. В hb 3.2 сборка unicode понимает, вроде, prg с utf8 и bom, а однобайтная не знаю, может и не понимать, т.к. надо осн. язык перекодировки указывать. Вообще такое ощущение, что программа у меня только с русским языком дружит: Вроде как система должна быть на этом языке (DEWIN). Такая х...та с работой в однобайтных системах была всегда Т.е. она не на Минигуи? Рабочая наша версия это hb 3.2 unicode + MiniGui 4.07 (версия 2012 г) unicode - товарищ по работе перевел. hb_cdpSelect("LV866") ; hb_setTermCP("LV866") такая установка во всех function main Немецкий не подключали, не нужен, а EN, LV, RU в пост. работе

SergKis: PS "MiniGui 4.07 (версия 2012 г) unicode" переведены только контролы, печать и др. не переводились, т.к. печать, pdf, mail, excel остались в VO 2.7, т.к. она также в unicode переведена была товарищем ~ в 2003 г.

SergKis: PS2 В том примере с[pre2] DEFINE FONT Arial FONTNAME App.FontName SIZE App.FontSize CHARSET 186 // BALTIC_CHARSET DEFINE FONT ArialBold FONTNAME App.FontName SIZE App.FontSize BOLD CHARSET 186 // BALTIC_CHARSET DEFINE FONT ArialRu FONTNAME App.FontName SIZE App.FontSize CHARSET 204 // RUSSIUN_CHARSET DEFINE FONT ArialRuBold FONTNAME App.FontName SIZE App.FontSize BOLD CHARSET 204 // RUSSIUN_CHARSET[/pre2] я попробовал в тсб показать файл в dos lv866 кодировке, система и prg RU1251 и BALTIC_CHARSET у фонта - получилось показать, ввод с клавиатуры лат. языка и др. контролы (наверно не поймут) я не пробовал. По идее система и prg DEWIN и RUSSIAN_CHARSET тсб так же отработает, а остальные контролы скорее нет, чем да. Т.е. язык системы ставим в hmg и работаем, как то так должно быть. Для вашей ситуации надо как минимум hb в unicode + VWT или VWG (тут были контролы windows какие то) и prg, базы в utf8 или взять HwGui собрать unicode вариант, там было и пробовать

rvu: Спасибо за советы! Буду пробовать дальше. SergKis пишет: ввод с клавиатуры лат. языка и др. контролы (наверно не поймут) я не пробовал. Не понял, у вас же работают с двумя языками. Я думал, их и вводят в какие-то поля при необходимости. Но у вас вообще беда, ведь могут быть тексты на смеси языков, как вы с ними без utf работаете не представляю. SergKis пишет: базы в utf8 Базы-то у меня изначально в utf.

SergKis: rvu пишет Не понял, у вас же работают с двумя языками. Я думал, их и вводят в какие-то поля при необходимости Да, есть базы, где языки разделены (условно) по разным полям, но никто не мешает вводить смешано в одно поле. Для примера взял именно такую базу. 1. Проверить тсб (это не стандартный контрол windows) и он правильно отобразил строки с разным языком. 2. Т.к. в hmg 4.07 тсб версии 7.0, а в тек. версии 9.0 и более стабильно работающая и др. контролы более продвинуты, были мысли использовать интерфейс для windows лат. версии LVWIN кодировку (1257), для windows рус. версии RUSSIAN (1251). Перевод на unicod тек. версии, были попытки, но слишком много текста стало и не успевали за версией, т.е. отложили на когда то. Но у вас вообще беда, ведь могут быть тексты на смеси языков, как вы с ними без utf работаете не представляю. Вообще то все оч. просто dbf как были в clipper LV866 dos кодировка (это аналог ru866, в которой некоторые символы псевдографики заменены лат. буквами) так и остались (для VO так же все). В hb unicode сборку добавлена такая таблица в список codepage по правилам harbour. В windows language 3и языка (можно больше). Др. язык можно в базу lv866 писать как utf8, если что

rvu: Нашел пример с португальским меню: C:\MiniGUI\SAMPLES\Advanced\DriveMapping\ У меня оно неверно показывается. Язык, естественно в тексте меняю. Там английский стоит по умолчанию, а португальский закомментарен. Всячески игрался с настройками, ничего не вышло. Попробовал сделать ошибки и посмотреть сообщения. Вообще чуднО выдает. Вместо parametros пишет parŕmetros. В примере: C:\MiniGUI\SAMPLES\Applications\Biorhythm\ польский, португальский, словенский неверно показываются.

SergKis: rvu пишет польский, португальский, словенский неверно показываются. Все правильно так и должно быть у вас русский windows и др. языки будут искажаться на ерунду. MiniGui (hmg) однобайтная система программирования (не unicod контролы). Я, наверно, плохо объяснил. Для каждого языка должна быть система windows на этом языке и в программе уст. язык системы windows, т.е. Для польского система windows должна быть на польском и в hmg prg файле ставим работу на польском. Для португальского система windows должна быть на португальском и в hmg prg файле ставим работу на португальском. Для немецкого система windows должна быть на немецком и в hmg prg файле ставим работу на немецком. И т.д. Тогда будет в программе английский и язык системы. Тсб не стандартный контрол windows (самопал), потому в нем получилось отображение языка по hardset, но ввод данных не пройдет. Если бы hmg была переведена в unicod и hb собран unicode было бы все ok для такого комплекта. Повторю Для вашей ситуации надо как минимум hb в unicode + VWT или VWG (тут были контролы windows какие то) и prg, базы в utf8 или взять HwGui собрать unicode вариант, там было и пробовать

rvu: SergKis пишет: у вас русский windows и др. языки будут искажаться на ерунду Я нечто подобное подозревал: rvu пишет: Или чего-то не хватает или я вообще что-то делаю не так. Если я свою программу скопирую на немецкую винду, то там будут кракозябры? Да, это очевидно. А если там в винду русский текст добавлен? Как-то пришлось под немецкой виндой что-то делать, но я тогда с консолью работал, 866 страницей, что-то менял в настройках, потом отдавая компьютер хозяину, вернул эти изменения на место. А страница 1251 у него и так есть. Вот если я у себя добавлю в винду, например, польский язык, я увижу их корректный текст в программе?

SergKis: rvu Вы же уже попробовали на рус. windows Вообще такое ощущение, что программа у меня только с русским языком дружит: SET CODEPAGE TO SPANISH SET LANGUAGE TO SPANISH AlertInfo(hb_Utf8ToStr('Ññ',"ESWIN")) // неправильно показывает AlertInfo(hb_Utf8ToStr('Проба текста',"RU1251")) // всё работает Как-то пришлось под немецкой виндой что-то делать, но я тогда с консолью работал, 866 страницей У нас немцы приходили с линуксом, clipper и ads в начале 2000х, но их выжили. Вот если я у себя добавлю в винду, например, польский язык, я увижу их корректный текст в программе? Нет, надо что бы windows был на польском. У нас, как правило, ставят windows клиенты с LVWIN (нац. озабоченные) и с RU1251 остальные и когда делал пример с тсб и hardset имел ввиду на 1ой в prg ставлю codepage LVWIN (1257), на 2ой RU1251. В Language системы 3и языка EN, LV, RU (как минимум)

SergKis: PS Лат. windows - это все сообщения, меню, кнопки, титулы ... все на латышском (веселуха еще та, т.к. могут отличаться от EN вариантов)

rvu: SergKis пишет: Нет, надо что бы windows был на польском. У нас, как правило, ставят windows клиенты с LVWIN (нац. озабоченные) и с RU1251 остальные и когда делал пример с тсб и hardset имел ввиду на 1ой в prg ставлю codepage LVWIN (1257), на 2ой RU1251. В Language системы 3и языка EN, LV, RU (как минимум) Не понимаю. На винде с RU1251 это у вас работает? А если я добавлю язык разве у меня не будет - В Language системы "3и языка (как минимум)"? Т.е. я не понимаю, как у вас три языка и больше, если они не добавлены потом в национальный виндоус. Если у вас ставят windows клиенты с LVWIN, разве они потом не добавляют русский, как я польский (или немецкий) хотел для примера добавить?

SergKis: rvu пишет Если у вас ставят windows клиенты с LVWIN, разве они потом не добавляют русский, как я польский (или немецкий) хотел для примера добавить? Для unicode добавляйте сколько надо языков, для не unicode hmg что стоит в Region control panel. У меня windows EN, Region - Russian, Local - Latvia. Languge - EN, LV, RU. Для hmg LVWIN недоступен Region - Latvia, Local - Latvija. Languge - EN, LV, RU. Для hmg RUSSIAN недоступен Как работать в hb VWT режиме смотрите тексты hbedit редактора (не GUI), кусочек[pre2] ... hb_cdpSelect( "RU866" ) @ 09, 10, 15, 72 BOX "┌─┐│┘─└│ " @ 13, 20 SAY "├" @ 13, 60 SAY "┤" @ 13, 11 TO 13, 71 hb_cdpSelect( oEdit:cp ) @ 10, 12 SAY "Open file" @ 12, 12 SAY "[ ] ReadOnly" @ 12, 27 SAY "[ ] In a current window" ... [/pre2] т.е. рамочки ru866, надписи en, oEdit:cp - выбранный язык текста

rvu: Т.е. это "Язык программ не поддерживающих Юникод"? Я могу выбрать немецкий, тогда у меня всё в Минигуи на немецком заработает, но вместо русского?

SergKis: rvu пишет Я могу выбрать немецкий, тогда у меня всё в Минигуи на немецком заработает, но вместо русского? Да. Только тсб можно исп. для отображения с исп. chardset, т.е. для DE надо знать номер charset, что бы исп. с RUSSIAN cdp. Примечание для GUI интерфейса. Если исп. unicode HwGui, там таблицы это как BROWSE в hmg и если вам нужны многострочные строки, заголовки, подножия, superheader, то этого там нет

SergKis: PS Есть пример в минигуи с _MIXEDMODE_ с запуском окна ShowConsole( cConsoleTitle ) ... HideConsole( cConsoleTitle ) посмотрите, может под ним можно организовать ввод DE данных. Я не смотрел за ненадобностью, просто вспомнил про _MIXEDMODE_

SergKis: PS2 Посмотрел пример BASIC\MixedMode, в build.bat вместо gtwin исп. gtwvt -> получил окно wvt. Так понимаю, что редактор hbedit можно встроить в такие окна (gtwin, gtwvt) и работать с текстами в разных кодировках, потом писать тексты можно в dbf

rvu: Подумалось, а если сделать свой шрифт? Взять готовый фонт и заменить какие-нибудь русские буквы немецкими. Далее подключить этот фонт к винде и указывать его в нужных контролах. Работать с ним, как с обычным русским текстом, для харбора и для базы он таким и будет, только показываться будут символы из особого фонта. Заменить русские буквы, которые на тех клавишах, что на немецкой клавиатуре. Можно сделать и виртуальную клавиатуру для ввода этих знаков. Как такая идея? Реализуема? Хочу сразу много критики, чтобы время впустую не тратить.

SergKis: rvu Вы посмотрели тексты hbedit ? Можно для начала взять для -gtwvt установки для окна[pre2] ... IF Empty( nScreenH ) nScreenH := 25 ENDIF IF Empty( nScreenW ) nScreenW := 80 ENDIF IF nScreenH != 25 .OR. nScreenW != 80 IF !SetMode( nScreenH, nScreenW ) nScreenH := 25 nScreenW := 80 ENDIF ENDIF ... IF Empty( cFontName ) hb_gtinfo( HB_GTI_FONTNAME, "Lusida console" ) ELSE hb_gtinfo( HB_GTI_FONTNAME, cFontName ) ENDIF IF Empty( nFontWidth ) hb_gtinfo( HB_GTI_FONTWIDTH, Int( ( hb_gtinfo( HB_GTI_DESKTOPWIDTH ) / nScreenH ) ) ) ELSE hb_gtinfo( HB_GTI_FONTWIDTH, nFontWidth ) ENDIF IF Empty( nFontHeight ) hb_gtinfo( HB_GTI_FONTSIZE, Int( ( ( hb_gtinfo( HB_GTI_DESKTOPHEIGHT ) - 64 ) / nScreenW ) ) ) ELSE hb_gtinfo( HB_GTI_FONTSIZE, nFontHeight ) ENDIF IF yPos != Nil hb_gtinfo( HB_GTI_SETPOS_XY, xPos, yPos ) ENDIF hb_gtinfo( HB_GTI_CLOSABLE, .F. ) IF lMaximize hb_gtinfo( HB_GTI_MAXIMIZED, .T. ) ENDIF hb_cdpSelect( "UTF8" ) [/pre2] и GET ввод уже будет utf8. Имея handle окна им можно управлять, скрывая, поднимая, располагая в нужных местах и уст. кол-во строк и ширину и т.д. Т.е. МиниГуи обеспечивает интерфейс RUSSIAN\EN + отображение тсб таблицы с charset языками, окно gtwvt ввод и просмотр de и др. языков, отличных от RUSSIAN

rvu: SergKis пишет: Т.е. МиниГуи обеспечивает интерфейс RUSSIAN\EN + отображение тсб таблицы с charset языками, окно gtwvt ввод и просмотр de и др. языков, отличных от RUSSIAN SergKis пишет: Повторю, MiniGui однобайтная, как и hb сборка с ней. Т.е. нужно будет собирать часть программы в МиниГуи, а часть в другом харборе и писать обмен данными через базы? А насчет моей идеи что скажете? Просто интересно. Может, сразу забракуете, возможно, я о чем-то не подумал. Хотя бы теоретически это может быть реализуемо?

SergKis: rvu пишет Т.е. нужно будет собирать часть программы в МиниГуи, а часть в другом харборе и писать обмен данными через базы? Пример BASIC\MixedMode посмотрите, там два окна есть сразу, можете даже переключаться между ними (gtwin окно минимизировано). Т.е. в _MIXEDMODE_ одна прогр. MiniGui и два интерфейса, окно gtwin\gtwvt и окна GUI А насчет моей идеи что скажете? Просто интересно. Может, сразу забракуете, возможно, я о чем-то не подумал. Хотя бы теоретически это может быть реализуемо? Вы описали фонт как LV866 3-и языка, но работает он в unicode сборке.

rvu: SergKis пишет: Пример BASIC\MixedMode посмотрите, там два окна есть сразу Я смотрел с окном gtwvt. Мне непонятно, как эти данные программа минигуи будет обрабатывать, если она однобайтная.

rvu: SergKis пишет: Вы описали фонт как LV866 3-и языка Нет, кодировка такая же, 1251, но есть особый фонт, где часть русских букв заменена. Пишется, допустим, font ‘MyArial’. А в нем по коду русской буквы выдается начертание немецкой.

SergKis: rvu пишет Нет, кодировка такая же, 1251 Так и LV866 это RU866, где часть псевдогрфики заменена, а FR, LV, ... (26 языков европы) куда денете. Не проще ли hmg тексты перевести в unicod ? ВААЩЕ пробблем не будет.

SergKis: rvu пишет Мне непонятно, как эти данные программа минигуи будет обрабатывать, если она однобайтная. Так данные в utf8. Присваиваете программе hmg имя SET STATIONNAME TO "MAINPROC" для передачи данных по сообщению и передаете, если надо в hmg SendData( "MAINPROC", R2 ) // ф-я FN1 или пишете в раздельно открытый dbf поле в кодировке utf8 REPLACE U_FLD1 with R2 а в hmg передаете, что работа в wvt закончена, например SendData( "MAINPROC", 1 ) // типа код завершения в GUI окне получив команду можете для тсб сделать :Refresh() или :DrawSelect() - перепоказать таблицу или строку Не помню, оч. давно не работал с gtwvt, можно ли там поймать сообщение WM_COPYDATA, а то можно было бы организовать обмен командами, но в принципе и то что есть много что дает по мне, для работы в однобайтной среде

SergKis: PS Стандартные контролы не покажут ничего с de, это ложится на окно gtwvt, тсб должна показать колонку по фонту с charset для DE oCol:bData := {|| hb_UtfToStr((oBrw:cAlias)->U_FLD1, "DEWIN") } oCol:hFont := GetFontHandle("FONT_DE") надо пробовать

SergKis: PS2 SergKis пишет или пишете в раздельно открытый dbf поле в кодировке utf8 Сори, это одна программа, можно передать в FN1 алиас и не надо повторного открытия

rvu: SergKis пишет: а FR, LV, ... (26 языков европы) куда денете Мне в ближайшее время актуальны только Германия и Франция. И то это не очень срочное дело. В идеале мне, конечно, нужен utf8, а это костыли какие-то. Но отдельные окошки в другой программе это тоже некий костыль и придется передавать кучу данных туда сюда. Но, это более универсальный способ, хотя, наверное, более трудоемкий. А есть надежда на появление utf8 в Минигуи? Это зависит от Григория?

SergKis: rvu пишет А есть надежда на появление utf8 в Минигуи? Это зависит от Григория? Наверно, больше от энтузиастов, т.к. надо внимательно прошерстиь C тексты, сделать изменения констант '...' на _TEXT('...') выделение памяти где было на n байт увеличить n*2 и может еще, что, подзабыл уже (не сишник и делал это давно), но главное протестировать, т.к. пропущенное сразу не увидишь. а это костыли какие-то Так они были в window всегда после dos clipper времен до hb unicode реализаций (это 2009 г появилась hb 2.0). Но, это более универсальный способ, хотя, наверное, более трудоемкий. Если работаете с memo полями, то их, как правило дают править\вводить в отдельном wvt окне, тут это может быть сделано также, т.е. в тсб показываете часть текста в строке, а все в окне ввода\корректировке. Ввод\корректировку можно всю перенести на gtwvt окно - как в clipper (без обработки мышинных событий, это совсем просто) ввод всех данных записи из тсб и запись этих значений в dbf, SetKey(...) в gtwvt никто не отменял. Есть еще gtwvg (в contrib hb) с gui элементами (toolbar, button, label ...) но такой либы в hmg нет, можно было бы их (контролы) исп. на доп. окне. - веселее было бы. Но надо пробовать, будут ли hmg ON KEY ... ACTION ... пересекаться с SetKey(...) gtwvt и все остальное

SergKis: PS на окне gtwvt можно задействовать и tbrowse на dbf, думаю будет работать и на поля utf8 при cdp utf8 без лишних ф-й перекодировки hb_utf8ToStr(..., ""DEWIN)

rvu: Спасибо! Буду что-нибудь пробовать. SergKis пишет: Наверно, больше от энтузиастов, т.к. надо внимательно прошерстиь C тексты Энтузиастов со знанием C? SergKis пишет: но главное протестировать, т.к. пропущенное сразу не увидишь Это, наверное, в процессе работы тестируется? Или по определенному плану все функции? Но собирает это всё вместе Георгий? То есть без его энтузиазма ничего не выйдет. Сначала надо вообще определить, кому и насколько это нужно.

rvu: SergKis, да, вы правы, самое разумное делать еще одно уникодное приложение и соединять его с основной программой. Чем больше думал насчет своей идеи о фонтах, тем меньше она мне нравилась. На одни костыли надо другие делать, дичь какая-то получается. Но хоть узнал про смешанные кодировки, это было интересно.

rvu: SergKis пишет: Рабочая наша версия это hb 3.2 unicode А где ее взять? Решил попробовать с консольными уникодными программами поиграться. А если с каким-нибудь примером вообще шикарно было бы.

SergKis: rvu пишет А где ее взять? Собрать исходники hb в unicode, есть параметр сборки _UNICODE_, но лучше гляньте, как пишется точно, по памяти могу ошибиться

Andrey: Pasha пишет: Можно ли использовать 8-ми битную казахскую кодировку KZ-1048, или СТ РК 1048—2002 (это расширение cp1251). Насколько она распространена ? Проверьте пожалуйста казахский алфавит: Мне наверное потребуется эта кодировка в МиниГуи. Как подключить её к однобайтовой текущей версии ?

Andrey: https://serj129.ucoz.ru/publ/kodirovki_kazakhskogo_jazyka/1-1-0-13#L5.2.1.5 5.2.1.5 Кодировка KZ-1048 Этот долгожданный официально принятый 8-битовый стандарт кодировки казахского языка приведен в Таблице A. стандарта почему-то в первую очередь пожертвовали совместимостью с украинским и белорусским языками, заодно и сербским и македонским, хотя мест, занимаемых сербско-македонскими буквами вполне хватало для размещения всех казахских букв, а совместимость с украинцами и белорусами можно было сохранить - все же связи с этими странами большие да и украинцев в Казахстане довольно много. В результате места части сербско-македонских букв остались не к селу не к городу... Такое впечатление что авторы стандарта на продумали так тщательно, как следовало бы (наверно времени не хватило). Ну, вот теперь будем жить с таким стандартом... Кодировка стараниями А.Веремеева из Oracle (спасибо ему!) зарегистрирована в IANA.org под названием KZ-1048. Ранее использованное в данной статье название кодировки RK1048, зарегистрированно как синоним (alias).

Haz: Andrey пишет: Ну, вот теперь будем жить с таким стандартом... Андрей, во первых на не привыкать. Во вторых, это первый блин... уверен дальше их будет много разных и "вкусных"

Andrey: Haz пишет: Андрей, во первых на не привыкать. Во вторых, это первый блин... уверен дальше их будет много разных и "вкусных" Да нет, это нормальный и последний стандарт для казахского. Я кучу сайтов пересмотрел. Пишу об этом, потому что надо мне свою прогу на казахский делать. Перевод меню и базу. А этот казахский базируется на RU1251 - очень удобно, тексты не нужно в UTF8 переводить. На украинский я менюшки перевел (сделал отдельный файл МояПрога.ua, я писал об этом здесь на форуме) и осталось базу перевести. Не всё так быстро получается.

Dima: Andrey пишет: Пишу об этом, потому что надо мне свою прогу на казахский делать. Хорошо не на китайский или грузинский :)

Pasha: Перенесу-ка я обсуждение сюда. Сделал кодировку для kz-1048 (еще два года назад), Андрей сейчас ее тестирует. Мы общаемся по почте Возникла проблема: при установленной KZWIN (так я ее назвал) HMG TSBrowse неправильно показывает казахские символы Андрей грешит на KZWIN, но причина вовсе не в ней. Можно взять любой текст в этой кодировке (или самому сделать текстовый файл), открыть его блокнотом. Символы будут показываться неправильно Поиграться со шрифтами, поменять charset (набор символов). Ну нет в стандартных шрифтах charset для kz-1048 По-видимому, надо искать соответствующий шрифт Вот нашел ссылку, где курят эту тему: https://vse.kz/topic/39374-problemi-s-kazahskimi-shriftami/page-12 Еще вариант: смотреть в сторону полной уникодности

SergKis: Pasha пишет смотреть в сторону полной уникодности Без вариантов, именно так Андрей мне тоже прислал вариант txt с языками, я его в ini превратил и сделал пример unicode Тут смотреть https://TransFiles.ru/s3v4w LV - правильно, остальные языки надо проверить gfilatov2002 MiniGuiVersion() выдает ANSI, а надо UNICODE

Andrey: Pasha пишет: Символы будут показываться неправильно Поиграться со шрифтами, поменять charset (набор символов). Ну нет в стандартных шрифтах charset для kz-1048 По-видимому, надо искать соответствующий шрифт Т.е. этот вариант может прокатить, если иметь рядом с программой нужные шрифты и подгружать их в свою прогу ? Фигово, но хоть можно будет работать. Вот нашёл https://life.ansor.info/kazakh_shrift/ Подойдут такие ? Pasha, надо бы как у всех языков сделать, чтобы не путаться: [pre2]hb_cdpSelect( "KZWIN" ) HB_LANGSELECT("KZWIN")[/pre2] [pre2]hb_cdpSelect( "DEWIN" ) HB_LANGSELECT("DEWIN")[/pre2]

gfilatov2002: SergKis пишет: MiniGuiVersion() выдает ANSI, а надо UNICODE У меня этот пример, собранный Unicode сборкой, выдал все правильно: ver. = Harbour MiniGUI Extended Edition 21.11.0 (32-bit) UNICODE v.m. = 21.11.0 numba = 211100 CODEPAGE = UTF8 LANGSELECT = EN и размер экзешника у меня больше (2 287 104 байт) против вашего (2 226 176 байт)

SergKis: gfilatov2002 Был не прав, по инерции поправил путь в minigui.cfg на MiniGuiBcc58 MG_ROOT=c:\miniguiBcc58Unicode исправил, все стало на место

Pasha: Andrey пишет: Т.е. этот вариант может прокатить, если иметь рядом с программой нужные шрифты и подгружать их в свою прогу ? Фигово, но хоть можно будет работать. Вот нашёл https://life.ansor.info/kazakh_shrift/ Подойдут такие ? Нужен не просто шрифт с казахскими символами, они я думаю есть и в стандартных шрифтах. Нужен шрифт с charset для кодировки KZ-1048 Pasha, надо бы как у всех языков сделать, чтобы не путаться: hb_cdpSelect( "KZWIN" ) HB_LANGSELECT("KZWIN") hb_cdpSelect( "DEWIN" ) HB_LANGSELECT("DEWIN") KZWIN я переименую в KZ1048, так думаю будет правильнее Языковый модуль в харборе именуется двумя символами, так как он не привязан к кодировке Для совместимости есть возможность указывать то же имя, что и для кодировки

Andrey: Pasha пишет: Латышский язык и латышские кодовые страницы: https://cloud.mail.ru/public/5Myf/3sT2eJtFJ гляньте, нет ли косяков. В кодировку я добавил четыре отсутствующих в латышском алфавите латинских символа. Pasha пишет: Спасибо, поправлю. Добавлю еще до кучи эстонский, и предложу в devlist А уже добавлены эти языки в Харбор ? И ещё вопрос по белорусской кодовой странице - когда будет в Харборе ? Ну и до кучи тогда и добавить казахский язык, как есть. А когда потребуется будем допиливать...

Pasha: Еще не добавлены, но у тебя же они все есть Сейчас ты их напрямую указываешь при сборке проекта, а так они булут в библиотеках hbang и hbcpage, вот и вся разница

Andrey: Pasha пишет: Еще не добавлены, но у тебя же они все есть Да это сколько тащить лишних модулей надо то... И в библиотеку Григорию добавлять примеры будет сложно, много лишних модулей. Белорусский язык есть, а кодовых страниц нет. В пример Tsb_5Win добавил работу с 4 языками и не хотелось бы туда тащить С-модули.

Pasha: Пожалуюсь вот. Как сложно стало жЫть :( Давно не заходил в groups.google.com. Авторизуюсь, ввожу емайл и пароль Гугл говорит: сомневаюсь в тебе, мил человек, подтверди себя. Послали тебе письмо с кодом Захожу в майл.ру, авторизуюсь. Майлру говорит: сомнительный ты какой-то, подтверди свой номер телефона. Подтверждаю, пускает. Даю гуглю код из письмя Гугль говорит: хорошо мол, но все равно я в тебе сомневаюсь, давай телефон, вышлю смс с кодом Даю телефон, получаю смс, кормлю его гуглю. Вижу свои группы и наслаждаюсь В сухом остатке гугль из меня выцепил номер телефона

SergKis: Как просил Андрей, просмотр, простой, вставил в пример Тут https://TransFiles.ru/u7w3o

SergKis: Как просил Андрей, просмотр, чуть сложней, вставил в пример, на базе ф-ии _TBrowse() Тут смотрим https://TransFiles.ru/ju3qz PS Пропустил удаление dbf (добавляет записи всегда) [pre2] fErase( App.Cargo:cDbf+".dbf" ) IF ! hb_FileExists(App.Cargo:cDbf+".dbf") [/pre2]

gfilatov2002: SergKis пишет: пример, на базе ф-ии _TBrowse() Пример - понравился, добавлю его в unicode сборку

SergKis: gfilatov2002 пишет добавлю его в unicode сборку лучше чуть поправленный вариант. Тут https://TransFiles.ru/jwujq PS ф-ю oIniData( cIni, lMacro, lUtf8, cRazd ) может в lib к классу положить, что бы не таскать

gfilatov2002: SergKis пишет: лучше чуть поправленный вариант Ok SergKis пишет: ф-ю oIniData( cIni, lMacro, lUtf8, cRazd ) может в lib к классу положить Мне кажется, что ее можно заменить с помощью #xtranslate

SergKis: gfilatov2002 пишет Мне кажется, что ее можно заменить с помощью #xtranslate Не очень понимаю, что лучше 4 #xtranslate и следить, что бы не потерялись или ф-ю

SergKis: gfilatov2002 Поборолся еще немного с примером, добавил в ini вкл. edit и кол-во строк в отображении Memo поля Edit = .T. MemoHV = 5 можно поиграться в ini FontName, FontSize Пример тут https://TransFiles.ru/2a9vy

gfilatov2002: SergKis пишет: Поборолся еще немного с примером Большое спасибо

Andrey: gfilatov2002 пишет: Мне кажется, что ее можно заменить с помощью #xtranslate А можно добавить ещё такую функцию ? [pre2]FUNCTION ProcNL(nVal) DEFAULT nVal := 0 RETURN "Вызов из: " + ProcName( nVal + 1 ) + "(" + hb_ntos( ProcLine( nVal + 1 ) ) + ") --> " + ProcFile( nVal + 1 )[/pre2] Надоело таскать из примера в пример.

SergKis: gfilatov2002 В примере поправил ошибки и добавил SpecHd https://TransFiles.ru/ec1cp

gfilatov2002: SergKis пишет: В примере поправил ошибки Большое спасибо, только закомментировал одну строку ... NEXT dbCreate(cDbf, aStru) // lDbf := hb_FileExists(App.Cargo:cDbf+".dbf") ENDIF в противном случае создается пустой файл

SergKis: gfilatov2002 пишет только закомментировал одну строку Была мысль соединить, добавление записей в том IF, но она потерялась Теперь нашлась. Думаю с примером завершил (добавил в ini и Footer наличие), SuperHeader в oTsb:bBody, кому надо, добавят Тут https://TransFiles.ru/h4y5t

gfilatov2002: SergKis пишет: с примером завершил

SergKis: gfilatov2002 Поправил в примере пару ошибок в _TBrowse(), убрал команды This..., кое что добавил в ini Тут https://TransFiles.ru/kar5i В таком виде, можно в lib поместить _TBrowse(oTsb), как Андрей просил

gfilatov2002: SergKis пишет: В таком виде, можно в lib поместить Большое спасибо Посмотрю, что можно сделать

SergKis: gfilatov2002 Пример (unicode hmg) тсб с codepage dbf файлов Тут https://TransFiles.ru/o65of

gfilatov2002: SergKis пишет: Пример (unicode hmg) тсб с codepage dbf Благодарю за помощь Также сделал совсем крошечный пример с использованием новой функции: [pre2]Function TBrwTest() Local oBrw, ; cForm := GetUniqueName( "wMain" ) DbSelectArea( "Employee" ) DEFINE WINDOW &cForm TITLE "Customer List" CHILD NOSIZE oBrw := _TBrowse() AEval( oBrw:aColumns, {| oCol | oCol:lFixLite := .T., ; oCol:lEdit := .T., ; oCol:lOnGotFocusSelect := .T., ; oCol:lEmptyValToChar := .T. } ) ON KEY ESCAPE ACTION ( iif( oBrw:IsEdit, oBrw:SetFocus(), ThisWindow.Release ) ) END WINDOW CENTER WINDOW &cForm ACTIVATE WINDOW &cForm Return Nil [/pre2]

Andrey: gfilatov2002 пишет: Также сделал совсем крошечный пример с использованием новой функции: А можно вообще обойтись без [pre2] DEFINE WINDOW &cForm TITLE ..... ..... [/pre2] А сразу так: [pre2]FUNCTION Main() RddSetDefault("DBFCDX") SET CODEPAGE TO UKRAINIAN // hb_SetCodepage( "UA1251" ) SET LANGUAGE TO UKRAINIAN // hb_CdpSelect( "UA1251" ) cAls := "UA_STREET" cDbf := GetStartUpFolder() + '\_Ua1251.dbf' cTtl := cAls + " , " + cDbf + " , UA1251" USE (cDbf) ALIAS (cAls) CODEPAGE "UA1251" NEW oBrw1 := _TBrowse(cTtl) SET LANGUAGE TO GERMAN SET CODEPAGE TO GERMAN cAls := "DE_STREET" cDbf := GetStartUpFolder() + '\_De1252.dbf' cTtl := cAls + " , " + cDbf + " , DEWIN" USE (cDbf) ALIAS (cAls) CODEPAGE "DEWIN" NEW oBrw2 := _TBrowse(cTtl) RETURN NIL[/pre2] Т.е. первое окно пускай создаётся MAIN, а потом другие WINDOWTYPE STANDARD ... NOWAIT Тогда на экране будет показаны сразу все нужные базы для просмотра. И кода меньше придётся писать....

SergKis: gfilatov2002 пишет Также сделал совсем крошечный пример с использованием новой функции: Пример 2 тсб на окне с использованием новой функции https://TransFiles.ru/cl7ds Andrey пишет И кода меньше придётся писать.... Окна делай сам, иначе несколько тсб на окне не выйдет, смотри пример

Andrey: SergKis пишет: Окна делай сам, иначе несколько тсб на окне не выйдет, смотри пример Пример классный ! Минимум кода и всё работает. Я так не могу.... А окна писать самому можно, согласен. Но хотелось просто узнать - возможно ли сделать пример без MAIN окна ! Проверку же можно сделать при вызове _TBrowse(...) [pre2] cForm := "HMG_" + ALIAS() + "_" + HB_NtoS( _GetId() ) IF Empty( _HMG_MainHandle ) // --- Main window --- DEFINE WINDOW &cForm WIDTH nW HEIGHT nH TITLE cTitle ICON cIcon ; MAIN NOMAXIMIZE NOSIZE TOPMOST BACKCOLOR GRAY ; ON INIT {|| This.Topmost := .F. } ELSE lModal := _HMG_IsModalActive // если было вызвано последнее окно MODAL, то вернёт .T. IF lModal // --- MODAL window --- DEFINE WINDOW &cForm WIDTH nW HEIGHT nH TITLE cTitle ICON cIcon ; MODAL NOSIZE ; ON INIT {|| This.Topmost := .F. /*, oBrw:Setfocus() */ } ELSE // --- STANDARD window --- DEFINE WINDOW &cForm WIDTH nW HEIGHT nH TITLE cTitle ICON cIcon ; WINDOWTYPE STANDARD TOPMOST NOMAXIMIZE NOSIZE ; ON INIT {|| This.Topmost := .F. /*, oBrw:Setfocus()*/ } ENDIF ENDIF[/pre2]

SergKis: gfilatov2002 Давайте сразу в _TBrowse() сделаем цвет [pre2] DEFAULT aColor := { ; { CLR_FOCUSB, {|c,n,b| c := n, iif( b:nCell == n, -CLR_RED , -RGB( 128, 225, 225 ) ) } }, ; { CLR_SELEF , GetSysColor( COLOR_WINDOWTEXT ) }, ; { CLR_SELEB , {|c,n,b| c := n, iif( b:nCell == n, -CLR_BLUE, -RGB( 128, 225, 225 ) ) } } ; } [/pre2] тогда в работе не надо делать дополнительно oBrw1:SetColor( { CLR_FOCUSB }, {{|c,n,b| c := n, iif( b:nCell == n, -CLR_RED, -RGB( 128, 225, 225 ) ) }} ) oBrw2:SetColor( { CLR_FOCUSB }, {{|c,n,b| c := n, iif( b:nCell == n, -CLR_RED, -RGB( 128, 225, 225 ) ) }} ) как в примере выше

gfilatov2002: SergKis пишет: сразу в _TBrowse() сделаем цвет OK SergKis Но при таком определении цвета у меня нет красного цвета при переключении фокуса с одного бровса на другой

SergKis: gfilatov2002 пишет Но при таком определении цвета у меня нет красного цвета при переключении фокуса с одного бровса на другой У меня работает цвет при переходе фокуса с одного тсб на другой (красный есть) и при переключении на FAR оба тсб синий цвет ячеек в фокусе Пример https://TransFiles.ru/8yyrp PS Собрал пример в однобайтной сборке, все так же работает, как и в unicode

gfilatov2002: SergKis пишет: У меня работает Разобрался (это был мой косяк ), сейчас все работает. Благодарю за помощь



полная версия страницы