Последние записи
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
30th
Авг
RxTrayIcon
Есть форма. На ней RxTrayIcon. В событии формы FormCloseQuery прописано:
Form1.Hide;
CanClose := False;Тоесть при нажатии на крестик, приложение не закрывается а сворачивается в трей. Потом по щелчку на иконку в трее приложение восстанавливается. Но если снова нажать на крестик никаких событий не происходит. Также после закрытия приложения полностью, в трее остается иконка до тех пор пока на нее не навести курсор, после чего она исчезает. Кк можно решить эти проблемы?
Вот схема, которая работает.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RXShell, StdCtrls;
type
TForm1 = class(TForm)
Tray1: TRxTrayIcon;
Button1: TButton;
procedure Tray1Click(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); //OnClick TRxTrayIcon в Object Inspector
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Button1Click(Sender: TObject);
private
FullClose : Boolean;
procedure ApplicationRestore(Sender : TObject);
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Tray1Click(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
Application.Restore;
Application.BringToFront;
Show;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnRestore := ApplicationRestore;
end;
procedure TForm1.ApplicationRestore(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_RESTORE);
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if FullClose then CanClose := True
else begin
CanClose := False;
ShowWindow(Application.Handle, SW_HIDE);
Hide;
end;
end;
procedure TForm1.Button1Click(Sender: TObject); //закрыть приложение
begin
FullClose := True;
Close;
end;
end.
Перейдите на форум за доолнительной помощью. В теме много полезного и интересного.
30th
Конвертирование utf-8 в windows-1251
string Utf8_to_cp1251(const char *str)
{
string res;
int result_u, result_c;
result_u = MultiByteToWideChar(CP_UTF8,
0,
str,
-1,
0,
0);
if (!result_u)
return 0;
wchar_t *ures = new wchar_t[result_u];
if(!MultiByteToWideChar(CP_UTF8,
0,
str,
-1,
ures,
result_u))
{
delete[] ures;
return 0;
}
result_c = WideCharToMultiByte(
1251,
0,
ures,
-1,
0,
0,
0, 0);
if(!result_c)
{
delete [] ures;
return 0;
}
char *cres = new char[result_c];
if(!WideCharToMultiByte(
1251,
0,
ures,
-1,
cres,
result_c,
0, 0))
{
delete[] cres;
return 0;
}
delete[] ures;
res.append(cres);
delete[] cres;
return res;
}
29th
Авг
УРОК 39. ИСПОЛЬЗОВАНИЕ ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ C++ ДЛЯ ОБРАБОТКИ ОШИБОК
После того как вы создали и отладили (удалили ошибки) несколько программ, вы уже способны предвидеть ошибки, которые могут встретиться в программе. Например, если ваша программа читает информацию из файла, ей необходимо проверить, существует ли файл и может ли программа его открыть. Аналогично, если ваша программа использует оператор new для выделения памяти, ей необходимо проверить и отреагировать на возможное отсутствие памяти. По мере увеличения размера и сложности ваших программ вы обнаружите, что необходимо включить много таких проверок по всей программе. Из этого урока вы узнаете, как использовать исключительные ситуации C++ для упрощения проверки и обработки ошибок. К концу данного урока вы освоите следующие основные концепции:
- Исключительная ситуация (exception) представляет собой неожиданное событие — ошибку — в программе.
- В ваших программах вы определяете исключительные ситуации как классы.
- Чтобы заставить ваши программы следить за исключительными ситуациями, необходимо использовать оператор C++ try.
- Для обнаружения определенной исключительной ситуации ваши программы используют оператор C++ catch.
- Для генерации исключительной ситуации при возникновении ошибки ваши программы используют оператор C++ throw.
- Если ваша программа обнаруживает исключительную ситуацию, она вызывает специальную (характерную для данной исключительной ситуации) функцию, которая называется обработчиком исключительной ситуации.
- Некоторые (старые) компиляторы не поддерживают исключительные ситуации C++.
C++ ПРЕДСТАВЛЯЕТ ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ КАК КЛАССЫ
Ваша цель при использовании исключительных ситуаций C++ состоит в упрощении обнаружения и обработки ошибок в программах. В идеале, если ваши программы обнаруживают неожиданную ошибку (исключительную ситуацию), им следует разумным образом ее обработать вместо того, чтобы просто прекратить выполнение.
В программах вы определяете каждую исключительную ситуацию как класс. Например, следующие ситуации определяют три исключительные ситуации для работы с файлами:
class file_open_error {};
class file_read_error {};
class file_write_error {};
Позже в этом уроке вы создадите исключительные ситуации, которые используют переменные и функции-элементы класса. А пока просто поверьте, что каждая исключительная ситуация соответствует классу.
29th
УРОК 29. ИСПОЛЬЗОВАНИЕ ШАБЛОНОВ ФУНКЦИЙ
При создании функций иногда возникают ситуации, когда две функции выполняют одинаковую обработку, но работают с разными типами данных (например, одна использует параметры типа int, а другая типа float). Вы уже знаете из урока 13, что с помощью механизма перегрузки функций можно использовать одно и то же имя для функций, выполняющих разные действия и имеющих разные типы параметров. Однако, если функции возвращают значения разных типов, вам следует использовать для них уникальные имена (см. примечание к уроку 13). Предположим, например, что у вас есть функция с именем тах, которая возвращает максимальное из двух целых значений. Если позже вам потребуется подобная функция, которая возвращает максимальное из двух значений с плавающей точкой, вам следует определить другую функцию, например fmax. Из этого урока вы узнаете, как использовать шаблоны C++ для быстрого создания функций, возвращающих значения разных типов. К концу данного урока вы освоите следующие основные концепции:
- Шаблон определяет набор операторов, с помощью которых ваши программы позже могут создать несколько функций.
- Программы часто используют шаблоны функций для быстрого определения нескольких функций, которые с помощью одинаковых операторов работают с параметрами разных типов или имеют разные типы возвращаемых значений.
- Шаблоны функций имеют специфичные имена, которые соответствуют имени функции, используемому вами в программе.
- После того как ваша программа определила шаблон функции, она в дальнейшем может создать конкретную функцию, используя этот шаблон для задания прототипа, который включает имя данного шаблона, возвращаемое функцией значение и типы параметров.
- В процессе компиляции компилятор C++ будет создавать в вашей программе функции с использованием типов, указанных в прототипах функций, которые ссылаются на имя шаблона.
Шаблоны функций имеют уникальный синтаксис, который может быть на первый взгляд непонятен. Однако после создания одного или двух шаблонов вы обнаружите, что реально их очень легко использовать.
29th
УРОК 16. ХРАНЕНИЕ ЗНАЧЕНИЙ В МАССИВАХ
Как вы уже знаете, ваши программы во время выполнения хранят информацию в переменных. До сих пор каждая переменная в программе хранила только одно значение в каждый момент времени. Однако в большинстве случаев программам необходимо хранить множество значений, например 50 тестовых очков, 100 названий книг или 1000 имен файлов. Если вашим программам необходимо хранить несколько значений, они должны использовать специальную структуру данных, называемую массивом. Для объявления массива необходимо указать имя, тип массива и количество значений, которые массив будет хранить. Этот урок описывает, как программы объявляют массивы, а затем сохраняют и обращаются к информации, содержащейся в массиве. К концу данного урока вы освоите следующие основные концепции:
- Массив представляет собой структуру данных, которая позволяет одной переменной хранить несколько значений.
- При объявлении массива вы должны указать тип значений, хранящихся в массиве, а также количество значений (называемыхэлементами массива).
- Все элементы внутри массива должны быть одного и того же типа, например, int, float или char.
- Для сохранения значения внутри массива вам следует указать номер элемента массива, в котором вы хотите сохранить свое значение.
- Чтобы обратиться к значению, хранящемуся внутри массива, ваши программы указывают имя массива и номер элемента.
- При объявлении массива программы могут использовать оператор присваивания для инициализации элементов массива.
- Программы могут передавать переменные-массивы в функции точно так же, как они передают любой другой параметр.
Программы на C++ широко используют массивы. Когда в уроке 17 вы начнете работать с символьными строками (например, название книги, имя файла и т. д.), вы будете оперировать массивами символов.
29th
УРОК 15. ЗНАЧЕНИЯ ПАРАМЕТРОВ ПО УМОЛЧАНИЮ
Как вы уже знаете, C++ позволяет вам с помощью параметров передавать информацию в функции. Из урока 13 вы выяснили, что C++ также обеспечивает перегрузку функций, предусматривая определения, содержащие разное количество параметров или даже параметры разных типов. Кроме этого, в C++ при вызове функций можно опускать параметры. В таких случаях для опущенных параметров будут использоваться значения по умолчанию. Этот урок описывает как устанавливать значения по умолчанию для параметров функций. К концу данного урока вы освоите следующие основные концепции:
• C++ позволяет программам указывать для параметров значения по умолчанию.
• Значения по умолчанию для параметров указываются в заголовке функции при ее определении.
• Если вызов функции опускает значения одного или нескольких параметров, C++ будет использовать значения по умолчанию.
• Если вызов функции опускает значение определенного параметра, то должны быть опущены и значения всех последующих параметров.
Обеспечение значений по умолчанию для параметров упрощает возможность повторного использования функций (их использования несколькими программами).
29th
УРОК 37. ИСПОЛЬЗОВАНИЕ КОНСТАНТ И МАКРОКОМАНД
Чтобы улучшить удобочитаемость программы, C++ поддерживает именованные константы и макрокоманды. Например, используя именованную константу, вы можете заменить цифровое значение, такое как 50, внутри вашего исходного кода смысловой константой, такой как CLASS_SIZE. Когда ругой программист читает ваш код, он не сможет предположить, что означает цифровое значение 50. Если же вместо этого он каждый раз будет видеть СLASS_SIZE, то он поймет, что это значение соответствует числу студентов в классе. Аналогично, используя макрокоманды, ваши программы могут заменить сложные выражения типа
result = (х*у-3) * (х*у-3) * (х*у-3);
вызовом функции с именем CUBE, как показано ниже:
result = CUBE(x*y-3);
В данном случае макрокоманда не только улучшает удобочитаемость вашего кода, но и упрощает ваш оператор, уменьшая вероятность ошибки. Этот урок рассматривает именованные константы и макрокоманды более подробно. К концу данного урока вы освоите следующие основные концепции:
- Чтобы сделать программы легче для чтения, программисты часто заменяют цифровые значения более понятными по смыслу именованными константами.
- Используя именованные константы в вашей программе вместо цифровых значений, вы можете сделать свои программы более легкими для изменения в будущем.
- C++ позволяет программам заменять выражения смысловыми именами макрокоманд.
- До компиляции программы компилятор C++ запускает специальную программу, называемую препроцессором, чтобы заменить каждую константу или макрокоманду соответствующим значением.
- Макрокоманды выполняются быстрее, чем функции, но увеличивают размер выполняемой программы.
- Большинство компиляторов C++ имеют предопределенные константы и макрокоманды, которые вы можете использовать в своих программах.
- (читать всё…)
29th
УРОКИ FLASH MX 2004
Flash MX 2004. Упражнение 2
Создание плывущего корабля.
Для создания плывущего кораблика мы будет пользоваться только инструментами Macromedia Flash MX 2004.
Для прорисовки прямых линий необходимо использовать инструмент line tool. Линиями мы прорисовываем корпус и мачту, на которой будет расположен парус. |
29th
УРОК 18. ХРАНЕНИЕ СВЯЗАННОЙ ИНФОРМАЦИИ В СТРУКТУРАХ
Из урока 16 вы узнали, что C++ позволяет хранить в массиве связанную информацию одного и того же типа. Вы уже выяснили, что группировка связанных значений в массив очень удобна. В большинстве случаев программам необходимо группировать связанную информацию разного типа. Например предположим, что ваша программа работает с информацией о служащих. Она должна отслеживать данные о фамилии, возрасте, окладе, адресе, номере служащего и т. д. Для хранения этой информации программе потребуются переменные типа char, int, float, а также символьные строки.
Если вашей программе требуется хранить связанную информацию разных типов, она может использовать структуру. Вы узнаете, что структура представляет собой переменную, группирующую связанные части информации, называемые элементами, типы которых могут различаться. Группируя данные в одну переменную подобным образом, вы упрощаете ваши программы, снижая количество переменных, которыми необходимо управлять, передавать в функции и т. д. В данном уроке рассматривается создание и использование структур. К концу этого урока вы освоите следующие основные концепции:
- Структуры позволяют вашим программам группировать в одной переменной связанные данные, типы которых могут различаться.
- Структура состоит из одной или нескольких частей данных, называемых элементами.
- Для определения структуры внутри программы следует указать имя структуры и ее элементы.
- Каждый элемент структуры имеет тип, например char, int и float, и имя каждого элемента должно быть уникальным.
- После того как ваша программа определит структуру, она может объявить переменные типа этой структуры.
- Для изменения элементов структуры внутри функции ваши программы должны передать структуру в функцию с помощью адреса.
Ваше умение понимать структуры и работать с ними облегчит использование объектно-ориентированных классов C++ в части 4. Выберите время для эксперимента с программами, представленными в этом уроке.
29th
Зачем нужен в интернете собственный сайт
СТАТЬЯ 8. ЗАКЛЮЧЕНИЕ
В предыдущих семи статьях я постарался наиболее понятно рассказать вам о создании собственного сайта. Это были просто советы и общие понятия о том или другом. Если вы читали все эти статьи, то могли заметить, что я не рассказывал ни о чем подробно. Этого и не было в моих целях. Когда-нибудь я напишу такие статьи, которые будут обо всем рассказывать очень подробно. Каждому человеку, бывающему в сети интернет, рано или поздно приходит в голову идея о создании собственно веб-сайта. Это может быть просто домашняя страничка или огромный портал. Но я считаю, что во все надо начинать с меньшего. В данном заключении мне бы хотелось дать вам еще несколько советов и пожелать удачи.
Во-первых, мне бы хотелось сказать, что иметь собственный сайт в интернете не только интересно, но и полезно. Возможно, когда-нибудь немного набравшись опыта и вы откроете свою веб-дизайн студию. А такая студия давала бы небольшой доход дополнительный к основному. Хотя, конечно, при желании можно заняться выполнением заказов на создание интернет-сайтов профессионально и сделать это дело постоянным источником доходов.
А если вы не откроете свою студию дизайна, то все, равно добившись успеха для своего сайта начнете зарабатывать на своем сайте. Сделав свой веб-ресурс эффективной рекламной площадкой можно размещать рекламу и при этом еще неплохо заработать.
Если вы собираетесь открывать свой собственный Интернет-магазин советую вам использовать какую-нибудь off-line CMS (о них я рассказывал в своих предыдущих статьях). И при этом еще заказать дизайн сайта у какой-нибудь студии дизайна. Это принесет вам большую выгоду и меньшие затраты не денег, но времени. Зато, используя все выше сказанное, управление вашим интернет-магазином и сайтом станет очень удобным и не надо будет беспокоиться
Я считаю, что единственное, чего требует от вас собственный веб-сайт, это время. Необходимо всего лишь время, чтобы обновить сайт, изменить его, поговорить со своими посетителями. И если у вас будет хватать времени на свой ресурс, то и успех у сайта будет.
И, наконец, мне бы хотелось подвести итоги всех статей из этой серии. Я постарался учесть все моменты, но не исключено, что что-то было мною забыто. Если вы с чем-то не согласны, то я могу сказать что у каждого своей мнение. Таких статей как те которые я написал в своей серии очень много и все статьи написаны по-разному, хотя и несут общий смысл.
В общем, желаю вам всем хороших и успешных сайтов!
Programming articles
Создание сайтов на шаблонах
Множество вариантов работы с графикой на канве
Шифруем файл с помощью другого файла
Перехват API функций — Основы
Как сделать действительно хороший сайт
Создание почтового клиента в Delphi 7
Применение паскаля для
решения геометрических задач
Управление windows с помощью Delphi
Создание wap сайта
Операционная система unix, термины и понятия
SQL враг или друг
Возникновение и первая редакция ОС UNIX
Оптимизация проекта в Delphi
Ресурсы, зачем нужны ресурсы
Термины программистов 20 века
Советы по созданию собственного сайта с нуля
Шифруем файл с помощью пароля
Фракталы — геометрия природы
Crypt — Delphi программа для шифрования
Рассылка, зачем она нужна и как ее организовать?
Учебник по C++ для начинающих программистов
Уроки для изучения ассемблера
Загадочный тип PCHAR
Средства по созданию сайтов
Операторы преобразования
классов is и as
Borland Developer studio 2006. Всё в одном
Создание базы данных в Delphi, без сторонних БД
Software engineering articles
Облако меток
css реестр ассемблер timer SaveToFile ShellExecute программы массив советы word MySQL SQL ListView pos random компоненты дата LoadFromFile form база данных сеть html php RichEdit indy строки Win Api tstringlist Image мысли макросы Edit ListBox office C/C++ memo графика StringGrid canvas поиск файл Pascal форма Файлы интернет Microsoft Office Excel excel winapi журнал ПРОграммист DelphiКупить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)