Архив рубрики: Статьи по Clarion

ООП…рулит

Cерия статей простым и доступным языком рассказывает о использовании ООП применительно к базам данных.

По мере надобности можно дописать отчеты, в которых появилась необходимость. В некоторой точке вы начинаете писать код, который уже встречался в другом отчете. Код не одинаков «один в один», но имеет похожую логику. И однажды, вы понимаете, что имеете три разных отчета представляющих одни и те же данные в разных видах. Это является проблемой. Например, при изменении данных в таблице, вы будете вынуждены модифицировать три процедуры отчета и изменить три секции кода. При большом количестве процедур это настоящая проблема, можно что-то легко забыть или пропустить.

Сейчас есть лучшее решение такой задачи: ООП. Читать далее

SQL…рулит

Сегодня, SQL рулит. Если вы хотите быть большим игроком на рынке для написания клиентов баз данных, вы должны знать SQL.

Я не говорю о разработке SQL баз данных и их администрировании. Я говорю именно о написании клиентской программы для использования базы данных, то что вы пишите на Кларионе.

Компании в наши дни отвернулись от Клариона, потому что они считают, что этого языка недостаточно для разработки сверхмощных программ. Эти компании ошибаются, но они делают свои заключения на основании того, что видят. Некоторые Кларион-программисты используют несколько шаблонов и говорят заказчику, что приложение закончено. И заказчики остаются разочарованными. Читать далее

Открытое письмо: MAV Direct ODBC

Автор: Игорь Толмачев

Дата публикации: 06.07.2005 в рассылке ClaList

Редактор: Still Zero

Решил написать своё субъективное мнение о работе на симбиозе SQL & Clarion , извините, если будет слегка сумбурно, т.к. времени, как обычно, не хватает. ClaList даже не всегда читаю…
До 2000 года последовательно (иногда параллельно DOS-WINDOWS) работал (один или в команде) со всеми версиями Клариона на *.DAT и *.TPS. Тут появляется перспектива обработки больших массивов данных + много пользователей + другие разработчики чистые FoxPro-шники. Читать далее

MDI Synchronization — шаблон для синхронизации MDI дочерних окон

  • Источник: стандартная помощь к Clarion 6.x
  • Дата публикации: 29.12.2005

В версии 6.х Клариона появился новый шаблон для синхронизации открытия MDI дочерних окон. Существует два шаблона — глобальный (Global Extension), который подключается в секции Global и локальный (Local Extension), который подключается непосредственно к процедуре.

Глобальный шаблон MDI Synchronization
В настройках глобального шаблона существует только один check-box, который используется для подключения класса синхронизации. По умолчанию, все процедуры содержат объект класса MDI синхронизации, за исключением процедур отчетов. Вы можете переключать этот check-box для тестирования приложения «с» и «без» объекта синхронизации. Читать далее

Отладка программ

Не так давно кидал в рассылку информацию с буржуйского форума о вызове отладчика в процессе работы программы. Дошли руки проверить. Классная вещь! Можно фактически отказаться от использования STOP.

Делается так.

1. Регистрируем клашин отлдчик как системный (в нем есть такой пункт меню).
2. В точке вставке Global Map пишем

    MODUL('WinApi')
       DebugBreak(),PASCALE,RAW,NAME('DebugBreak')
    END

Проще всего это «прибить намертво» в шаблонах.

3. В том месте, где нужно отлаживаться пишем (с первой колонки)

   ? DebugBreak  

Проще всего навесить на макрос, например AltD, последовательность «EndKey+EnterKey+? DebugBreak».

4. Компилим и запускаем программу на исполнение. Доходим до нужного места и получаем виндовый GPF. Жмем в нем кнопку «Отладчик». Открывается клашин отладчик и активизируется окно локальных переменных. В нем видим неопознанную переменную. Жмем на ней правую мышу и выбираем «открыть в исходниках опосля». Пару раз жмем AltE и (о чудо!) перескакиваем в нужный нам отлаживаемый исходный текст.
Особенно понравилось, что данную схему удобно использовать в multi-dll приложениях. Ставим точку останов в dll-модуле, компилим, копируем dll в каталог сборки и запускаем приложение. В нужном месте автоматом переходим в отладчик. Т.е. не нужно переводить модуль в exe, придумывать тестовый вызов и т.п.

Проверял на C55H, WinXP SP1.

С уважением,
Вячеслав Черников support@finsoft.ryazan.ru

HELP!!! Чем, как и для чего писать Help файлы (Вяткин Константин)

Константин Вяткин
26.11.2000
Недавно один мой знакомый принес свою программу. Принес, по его словам, «уже готовую». И действительно, InstallShield, англоязычный интерфейс и прочие вещи намекали на полную готовность к выходу в люди. Поигравшись несколько минут с окошками, я нажал F1 — реакции не последовало… Увидев мой недоумевающий взгляд, приятель быстро сориентировался и изрек: «А хелпа нету! Зачем он здесь нужен — у меня же интуитивно понятный интерфейс, понимаешь!» Читать далее

Неофициальный FAQ по языку Topspeed Clarion [Dos/Windows]

1. Как во время выполнения программы менять размеры Control элементов? (CW)

2. Как заставить выводить сообщение Tip по-русски? (CW)

3. Как ввести минус (-) в Entry поле формата @N-10.2? (CW)

4. Как сделать в окне с двума ListBox интерфейс а-ля Win95 Explorer и чтобы можно
было красиво менять размер ListBox? (CW)

5. При работе с MS SQL и Clarion 2.0 с ODBC драйвером при каждом обращении к таблицам требуется
вводить пароль (иногда несколько раз). Как стандартными путями побороть это? (CW)

6. Есть ли драйверы ODBC для кларионовских файлов (драйвера Clarion и
TopSpeed, .dat и .tps соответственно)? (CW)

7. Как присваивать из MEMO в STRING в соответствии с переносами строк
в MEMO? Или как найти сам код переноса строки в MEMO? (CW)

8. Как избежать следующего сообщения при линковке? (CW)
Making ProgName.exe
Link error: Group, or Segclass exceed 64 k.

9. Как в ListBox Tree, построенному по QUEUE, сворачивать-разворачивать ветви? (CW)

10. Почему в ListBox с деревом не работает скролинг по горизонтали? (CW)

11. Как читать числа из dbf? (CDD)

12. Хотелось бы знать, влияет ли на надежность, то что все таблицы (кроме справочников) я храню в
одном физическом файле? А также, влияет ли шифрование? (CW/CDD)

13. Как заставить REPORT не ограничивать размеры бумаги, если принтер этот
формат не поддерживает? (CW)

14. Как удалить файл, зная только его имя? (CDD)

15. Где взять русифицированные темплейты для CW2003? (CW)

16. Где взять русские темплейты для C4? (CW)

17. Для чего в Clarion используется вид связи между файлами INNER-JOIN? (CW)

18. А можно ли где галочек понаставить, чтобы мне пpога одним .exe вылезала,
а не пpиходилось к ней кучку .dll пpилагать? (CW)

19. Как передать событие из одного thread в другой? (CW)

20. Как отдать квант времени другим задачам из LOOP? (CW)

21. В отчете необходимо вывести подсчеты сумм по некоторым признакам. (CW)

22. Как построить сложный фильтр данных для БД? (CW)

23. Как отследить попытку ввода в BYTE по формату @N3 числа больше 255? (CW)

24. Как синхронизировать два Browse в одном окне? (CW)

25. А можно подpобнее о виpтуальных listbox’ах? (CW)

26. Как сделать, чтобы некоторый элемент (например, прямоугольник) изменял
свой цвет в зависимости от выбранной в «Свойствах экрана» цветовой
схемы Windows? (CW)

27. Возможно ли в Menu под пункты выбора выводить символьную строку,
текст которой формируется и меняется в процесе работы? (CW)

28. Существует ли способ перевода русских символов в базах данных из
DOS в Windows? (CW/CDD)

29. Какой embed нужно использовать для установки фильтра для browse в CW4?

30. Как заставить работать программы, скомпиленные под CDD 3.0 на
Pentium II-300? (CDD)

31. Каковы ограничения для передавемых и получаемых строк в функциях
GETINI/PUTINI? (CW20)

32. Существует ли в CW, возможность управлять классами пользователя? (CW)

33. Как поместить иконку в ITEM/MENU и менять её во время выполнения
программы? (CW)

34. Возможноли получить «Стандарты Кларион» по почте? (CW)

35. Как сконвертировать БД из одно формата в другой? (CW/CDD)

36. Как конвертировать массивы в DAT файле из OEM в ANSI? (CW)

37. Что нужно сделать для того, что бы поле поиска активизировалось
при нажатии русских букв и работало? (CDD)

38. Что такое MS SQL Accelerator? А так же SQL Anywhere Accelerator? (CW)

39. Как сделать связь One-To-One от одного файла к нескольким? (CW)

40. Можно ли сделать опциональный HIDE пунктов в PopUp меню в RunTime? (CW)

41. Можно ли находясь в окне на ListBox по нажатию MouseRight вызвать
всплывающее меню? (CW)

42. Как сделать окно always on top? (CW)

43. Как передать параметры командной строки приложению запущенному из среды
Clarion? (CW)

44. Как получить полный путь к исполняемому файлу приложения? (CW)

45. Как на этапе выполнения программы изменить некое свойство элемента
отчета? (CW)

46. Как перевести русские символы в БД, созданной в ДОС, для ее просмотра
в приложениях под Windows? (CW)

47. Как засунуть свой обработчик окна в класс — CallWindowProc? (CW)

48. Как запустить программу с параметрами? (CW/CDD)

49. Как правильно использовать оператор RUN в конструкции
RUN(‘nver.exe > aaa.txt’) для перенаправления результатов в файл? (CDD)

50. Как получить/выводить наименования месяцев, дней недели на русском
языке? (CW)

51. В embed-редакторе обнаружил «новое» событие у кнопок и полей ввода.
Что это за событие? (CW)

52. Как записать DOS-файл в BLOB? (CW)

53. Как можно произвести автоматическое переключение раскладки клавиатуры
в зависимости от алфавита (русский/латинский) букв в поле ввода? (CW)

54. Как избежать ошибки General Protection Fault при выборе True Type
шрифта при работе под Windows 98? (CW)

55. Как узнать пароль, с помощью которого зашифрованы базы данных? (CW/CDD)

56. Как проще всего в Browse закрепить одну(левую) колонку? (CW)

57. Как сделать надпись на кнопке в несколько строк? (CW/CDD)

58. Каким образом можно задать в словаре переменное имя для файла
данных? (CW)

59. Как в отчете вывести только одну выбранную в BROWSE запись? (CW/CDD)

60. Как создать итоговое поле по странице которое будет суммировать
только положительные значения? (CW,Legacy)

61. Подскажите, как менять цвет текста в поле, делаю ?stroka1{PROP:COLOR} = 000000FFh
меняет цвет фона а как текста

62. Когда вывожу sndPlaySound(SoundFile,0), система стоит ,когда звук закончился все опять движется,
возможно как то по другому что и звук был и работать можно.

63. Я снова потерял доку, что нужно править в реестре win2k, чтобы не вылетала
клара при наведении на кнопки управления окна.

Читать далее

В чем загадка притягательности Clarion?

1. Урок первый
2. Урок второй
3. Урок третий

Урок первый.

Clarion на персональном компьютере

Давайте начнем с одной несложной задачи из реальной жизни и попробуем понять, как она решается средствами системы Clarion.

Итак, требуется создать приложение, которое позволило бы обеспечить контроль
за успеваемостью студентов в некоем воображаемом университете.

В соответствии с американской системой (а задача эта позаимствована из примера TopSpeed University, входящего в комплект поставки CW 2.0) успеваемость характеризуется оценками, которые получает студент на промежуточном экзамене, на итоговом экзамене и по результатам курсовой работы. Читать далее

Кларион и Объектный Паскаль

Автор: Руслан Богатырев

Введение
Причины введения поддержки ООП в языке Кларион
Реализация ООП в CW 2.1

Основные различия между Кларионом и Объектным Паскалем
Методы класса
Конструкторы и деструкторы
Методы обработки сообщений
Указатели на методы
Статические и динамические объекты
Абстрактные классы
Свойства
Разделы описания классов
Динамическая проверка типа
Обработка исключительных ситуаций Читать далее

Как обратиться к глобальным данным dll из CPP

Автор статьи: Емельянов Максим

Иногда в проекте требуется написать модуль не на кларионе, а на с++.
Также иногда требуется в exe не только вызвать процедуру из dll, но и
обратиться к глобальным данным dll. Если мы пишем на кларионе (или на
с++ в среде того же MSVC++6.0), компилятор сам правильно генерит код
обращения к этим данным. Но что делать, если нужно обратиться из кода
на c++ к глобальным данным dll?
Предлагаю решение, которое давно
используется, и, возможно, будет для кого-либо полезным. Изначально
это было сделано для того, чтобы опращаться по одному и тому же
идентификатору к одним данным как в dll, так и в exe, например в тех
же макросах, да и процедурах.
Описывать все буду на реальном Читать далее