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

Clarion

Язык программирования Clarion был разработан Брюсом Баррингтоном в 1984 г. В своей статье он так описывает историю его создания: «Как это часто бывает, я просто пытался доставить себе удовольствие. Я купил свой первый персональный компьютер, смотрел на него и хотел писать программы для него. Это моя работа. Моим стимулом в работе было убеждение, что программирование должно быть проще, что языки программирования должны облегчать чтение и написание программ и что низкая производительность, связанная с процессом разработки программ, коренится в неадекватных и слабо спроектированных инструментальных средствах программирования». Первоначально проект создавался в рамках компании “HBO & Company”, но затем был выкуплен McKesson Corporation.

Clarion как язык программирования создавался для быстрой разработки деловых приложений и поэтому относится к категории 4GL языков. А система разработки Clarion относится к семейству RAD-систем (от англ. rapid application development — быстрая разработка приложений).

Читать далее …

Вопросы модернизации программ

Автор: Дмитрий Шлейтанов
Вопросы модернизации программ (теоретические эксперименты)

текст полной статьи утерян. если есть — присылайте

Часть 1: ПРОЛОГическая

Очевидно, что при длительном сопровождении программного продукта в процессе его совершенствования присутствует проблема, заключающаяся в необходимости изменения структуры базы данных (БД), с которой эта программа работает. Отсюда, как следствие, возникает задача разработки процедур конвертации прежних элементов БД (таблиц) в новые структуры, соответствующие требованиям новой версии программы. Читать далее

Шаблоны: Когда я это писал, оно казалось хорошей идеей.

Автор: Иванов Борис

Публикуется без редактирования и должной проверки. Все замеченные замечания 🙂 слать в редакцию.

…мне почему-то показалось что с выходом с7 стало как-то больше молодежи на форуме, подумал что будет полезно. Плюс статиститика опроса на сайте https://www.clarionlife.net показывает что есть целый 1 человек младше 18, может ему будет полезно.

Просто статей как-то совсем не добавляется, решил евангелизм будет не лишним. Качество кода может и не шик, но хоть что-то 🙂

Собственно, все нижеследующее порождено в связи с отсутствием чего-либо внятного по поводу Clarion Template Language от классиков жанра, поэтому пишу я, а классики, понадеемся, исправят то, что получится :).
Как сказано ранее- шаблон начинает писаться в тот момент, когда понимаешь что «данный кусок уже писал», таким моментом для меня стал код «Раскраска листбокса», по сути это изподкнопочное окошко, с 4 кнопками настройки цвета столбца (бэкграунд, шрифт и то же для селектированного-бэк и шрифт). Определив глобальную цель, начнем с поиска литературы: в комплекте с c7 идет неплохой хелп (на английском естественно), на вторые сутки перевода которого, ощущение дежавю стало просто осязаемым- все тоже самое, но на русском есть на фтп форума в древнем таком файле авторства Alexandre Katalov. С тех пор ничего нового (в документации) не добавили( на счет самого языка шаблонов- не знаю, если кому есть что сказать — отпишите). Так что Alexandre Katalov это must read. Читать далее

Список открытых MDI Child окон

Я знаю по крайней мере два способа получения списка дочерних окон фрэйма.

Один из них описан в статье «8 с половиной долларов» и заключается в обработке события WM_PARENTNOTIFY, которое поступает в окно MDI Client-а. Окно MDI Client это клиентская область окна фрэйма. Это окно можно найти путем перечисления дочерних окон фрэйма: необходимо найти окно с классом MDICLIENT. Либо просто получить его хэндл по AppWindow{Prop:ClientHandle}, где AppWindow – метка окна фрэйма.

Здесь я расскажу о втором способе. Буду краток и покажу только общий смысл.
Этот метод я использую для определения списка дочерних окон в меню Windows (Окна) в классе меню в CFC Library. В Clarion обычно вы используете для этого STD:WindowsList и список окон формируется автоматически. Читать далее

Замечания по Win API: Toolbar и tooltips-ы на нем

Отречение: имена функции, наименования классов и стилей пишу по памяти.

Речь идет о тулбаре, сделанном «своими руками», с использованием стандартного Windows-контрола ToolbarClass32.

В MSDN говорится, что для того, чтобы на кнопках на тулбаре появились тултипсы, достаточно при создании тулбара в CreateWindowEx добавить стиль TBSTYLE_TOOLTIPS.

Что происходит в этом случае? Вместе с тулбаром Windows автоматом создает контрол TooltipsClass32. При наведении на кнопку, находящуюся на тулбаре, контрол тултипа посылает событие TTM_GETDISPTEXT в форме WM_NOTIFY родительскому окну тулбара (не самому тулбару, а его родителю, а в случае, если тулбар лежит на ребаре, то событие посылается родительскому окно ребара). Обрабатывая сообщение TTM_GETDISPTEXT (или, что тоже TTM_NEEDTEXT), нужно заполнить структуру, содержащую текст тултипа. Читать далее

IP-драйвер: мнение #2

Автор: Сергей Редькин

Хотелось поделиться своими впечатлениями по работе драйвера. Поскольку проекты реально работают у клиентов и возимся мы с ним довольно долго и плотно, то есть и подводные камни, на которые мы наткнулись. Темплеты ABC, но не стандартные, а доработанные и перекочевавшие из CW4. Темплеты и классы адаптируются за 1 час…

При работе по 100 мбит сети никаких существенных замедлений не замечено. При многопользовательской работе получаем выигрыш на порядок, т.к. на TPS-файлах при работе с двух станций есть замедление в 10-20 раз. Работа через инет по ADSL тоже довольно шустрая. Через GPRS или 3G смотрится очень тоскливо. Броузник (одна страница) открывается 1-2мин. Но это понятно ping 0.5-1сек для GPRS и 0.25-0.4 для 3G. Но работать при необходимости все равно можно. Читать далее

Работа с классами в шаблонах

Автор: Lee White
Оригинальное название: Class Wrapper Templates The Easy Way
Дата публикации: 15 августа 2002г.
Дата перевода: 20 июля 2006г.
Уровень: advanced

Краткое описании: автор несколько стебно и опуская подробности рассказывает о том как реализовать стандартную закладку Classes, которую можно увидеть в стандартных шаблонах ABC, а также сгенерировать точки вставки для виртуальных методов вашего собственного класса.

Рисунок 1 – Закладка Classes в стд WindowManager-е Читать далее

Как подогнать размер колонки под размер данных в Browse-бокс при открытии окна

Новая возможность появилась в Clarion6 – автоматическое изменение размеров колонок browse-бокса.

Для того, чтобы активировать эту возможность в глобальных свойствах проекта (Global properties) на закладке «App Settings» выставьте галку «Enable auto size BrowseBox Columns». При работе приложения двойной клик мыши на правой границе колонки подгонит размер колонки под размер данных (так же как в MS Excel).

Существует простой способ применения этой возможности ко всем колонкам Browse-бокса при открытии окна.

После того как вы положили List-бокс на окно, установите следующее свойство после инициализации Browse-бокса:

BRWx::AutoSizeColumn.ResizeAll()

где BRWx это имя объекта. Хорошей точкой вставки будет являться самая последняя точка в методе Init объекта Window Manager:

 ! Prepare Alert Keys
 SELF.SetAlerts()

! [Priority 9001] BRW1::AutoSizeColumn.Init() BRW1::AutoSizeColumn.AddListBox(?Browse:1,Queue:Browse:1)

! [Priority 9550] BRW1::AutoSizeColumn.ResizeAll()

! End of "WindowManager Method Executable Code Section" RETURN ReturnValue

Печать шапки на всех страницах отчета.

Уже несколько раз наталкивался на вопрос по поводу печати шапки таблицы на каждой страницы отчета кроме первой. Решений данного вопроса несколько. Эта статья представляет одно из решений.

Задача:

Создать отчет. На первой странице напечатать общий заголовок отчета.
На последующих страницах печатать только заголовок таблицы.
Или, что тоже, напечатать общий заголовок, под ним напечатать PageHeader на первой странице а на всех последующих только PageHeader.

Реализация:

Читать далее

Неиспользуемые переменные ?!

Есть в Clarion такое понятие как #pragma

Так вот есть там интересные прагмы …
К примеру можно включить предупреждения компилятора о том что переменная описана но ни разу не использовалась.

Думаю кому нибудь данная возможность пригодится.
В оригинале прагма выглядит как: #pragma warn(wdnu => on | off | err)

Как использовать?
В глобальных опциях проекта на закладке Defines пишем: wdnu =>1

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