Faq затенить кнопку закрыть в заголовке формы


Содержание

Faq затенить кнопку закрыть в заголовке формы

Советы по работе с системой

Советы для написания программ-инсталляторов

Регистрация программ в меню «Пуск» Windows 95

Подобная проблема возникает при создании инсталляторов и деинсталляторов. Наиболее простой и гибкий путь — использование DDE. При этом посылаются запросы к PROGMAN. Для этого необходимо поместить на форму компонент для посылки DDE запросов — объект типа TDdeClientConv. Для определенности назовем его DDEClient. Затем добавим метод для запросов к PROGMAN:

var macrocmd:array[0..88] of char;

При вызове ProgmanCommand возвращает true, если посылка макроса была успешна. Система команд (основных) приведена ниже:

Create(Имя группы, путь к GRP файлу)

Создать группу с именем «Имя группы», причем в нем могут быть пробелы и знаки препинания. Путь к GRP файлу можно не указывать, тогда он создастся в каталоге Windows.

Delete(Имя группы)

Удалить группу с именем «Имя группы»

ShowGroup(Имя группы, состояние)

Показать группу в окне, причем состояние — число, определяющее параметры окна:

1 — нормальное состояние + активация

2 — миним.+ активация

3 — макс. + активация

4 — нормальное состояние

AddItem(командная строка, имя раздела, путь к иконке, индекс иконки (с 0), Xpos,Ypos, рабочий каталог, HotKey, Mimimize)

Добавить раздел к активной группе. В командной строке, имени размера и путях допустимы пробелы, Xpos и Ypos — координаты иконки в окне, лучше их не задавать, тогда PROGMAN использует значения по умолчанию для свободного места. HotKey — виртуальный код горячей клавиши. Mimimize — тип запуска, 0 — в обычном окне, <>0 — в минимизированном.

DeleteItem(имя раздела)

Удалить раздел с указанным именем в активной группе

ProgmanCommand(‘CreateGroup(Комплекс программ для каталогизации литературы,)’);

ProgmanCommand(‘AddItem(‘+path+’vbase.hlp,Справка по VBase,’+ path +’ vbase.hlp, 0, , , ‘+ path + ‘,,)’);

где path — строка типа String, содержащая полный путь к каталогу (‘C:\Catalog\’);

Как программно создать ярлык?

uses ShlObj, ComObj, ActiveX;

procedure CreateLink(const PathObj, PathLink, Desc, Param: string);

SLink := IObject as IShellLink;

PFile := IObject as IPersistFile;

with SLink do begin

Затенить кнопку «Закрыть» в заголовке формы

Следующий текст убирает команду «закрыть» из системного меню и одновременно делает серой кнопку «закрыть» в заголовке формы:

procedure TForm1.FormCreate(Sender: TObject);


hMenuHandle := GetSystemMenu(Handle, FALSE);

IF (hMenuHandle <> 0) THEN DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);

procedure FastFileCopy(Const InfileName, OutFileName: String; CallBack: TCallBack);

Const BufSize = 3*4*4096;

TBuffer = array [1..BufSize] of Byte;

infile, outfile : File;

if (InFileName <> OutFileName) then begin

SizeDone := 0; New(Buffer);

BlockRead(infile, Buffer^, BufSize, Size);

if Buffer <> Nil then Dispose(Buffer);

end else Raise EInOutError.Create(‘File cannot be copied into itself’);

Копирование методом потока

Procedure FileCopy(Const SourceFileName, TargetFileName: String);

S := TFileStream.Create(sourcefilename, fmOpenRead );

T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);

Копирование методом LZExpand

procedure CopyFile(FromFileName, ToFileName : string);

FromFile, ToFile: File;

if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle)

Копирование методами Windows

uses ShellApi; // . важно

function WindowsCopyFile(FromFile, ToDir : string) : boolean;

var F : TShFileOpStruct;

F.Wnd := 0; F.wFunc := FO_COPY;

F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;

procedure TForm1.Button1Click(Sender: TObject);

if not WindowsCopyFile(‘C:\UTIL\ARJ.EXE’, GetCurrentDir) then ShowMessage(‘Copy Failed’);

Как скопировать все файлы вместе с подкаталогами

procedure TForm1.Button1Click(Sender: TObject);

frombuf, tobuf: Array [0..128] of Char;

FillChar( frombuf, Sizeof(frombuf), 0 );

FillChar( tobuf, Sizeof(tobuf), 0 );


StrPCopy( frombuf, ‘h:\hook\*.*’ );

StrPCopy( tobuf, ‘d:\temp\brief’ );

With OpStruc DO Begin

fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;

Удаление каталога со всем содержимым

function DeleteDir(Dir : string) : boolean;

if IOResult<>0 then ;

if IOResult<>0 then begin

ShowMessage(‘Не могу войти в каталог: ‘+Dir); exit;

Found := FindFirst(‘*.*’, faAnyFile, SearchRec);

while Found = 0 do begin

if (SearchRec.Name<>‘.’)and(SearchRec.Name<>‘..’) then

if (SearchRec.Attr and faDirectory)<>0 then begin

if not DeleteDir(SearchRec.Name) then exit;

if not DeleteFile(SearchRec.Name) then begin

ShowMessage(‘Не могу удалить файл: ‘+SearchRec.Name); exit;

Определение системной информации

Часто при создании систем привязки программ к компьютеру или окон типа System Info или About Box необходимо определить данные о пользователе и о системе. Это можно сделать следующим образом (из примеров по Delphi — программа COA):

WinVer, WinFlags : LongInt;

hInstUser, Fmt : Word;

Buffer : ARRAY[0..30] OF Char;

LoadString(hInstUser, 514, Buffer, 30);

LoadString(hInstUser, 515, Buffer, 30);

LabelWinVer.Caption := Format(‘Windows %u.%.2u’,

LabelDosVer.Caption := Format(‘DOS %u.%.2u’,

IF WinFlags AND WF_ENHANCED > 0 THEN LabelWinMode.Caption := ‘386 Enhanced Mode’

Статьи 1
Советы по Delphi 1
Советы по работе с системой 1
Советы для написания программ-инсталляторов 1
Регистрация программ в меню «Пуск» Windows 95 1
Как программно создать ярлык? 1
Затенить кнопку «Закрыть» в заголовке формы 1
Копирование файлов 1
Как скопировать все файлы вместе с подкаталогами 1
Удаление каталога со всем содержимым 1
Определение системной информации 1
Как проинсталлировать свои шрифты? 2
Вставить какую-нибудь программу внутрь EXE файла 2
Как написать маленький инсталлятор? 2
Рисую две иконки 32х32 и 16х16, но под NT 32х32 не показывается! 2
Работа с принтером. 2
Система 2
Внешние модули (DLL), нити 6
Советы по работе с реестром. 7
Использование некоторых ключей реестра 7
Работа с реестром в Delphi 1 7
Объект INIFILES — работа с INI файлами. 7
Советы по работе с графикой 8
Разное 9
Глюки 14
Создание редактора карт в стратегиях типа WarCraft 14
Шпаргалка по ресурсам Windows-32 (для Delphi) 18
Стандартная технология доступа к ресурсам 18
Внутренний формат ресурсов Windows 18
Описание формата ресурсов в MS PE COFF. 19
Дамп памяти (взят из PE.TXT) 19
API 20
Программирование на основе Win32 API в Delphi 20
1. Введение 20
2. Существующие решения 20
3. Принципы построения API-библиотеки 20
4. Библиотека WinLite 21
5. Пример программы на основе библиотеки WinLite 23
KOL 23
Состояние проекта KOL 23
FAQ 24
Часто задаваемые вопросы по Borland Delphi 24
Общие вопросы по Delphi и данному FAQ (часть 1) 24
Введение 24
Вопросы общего характера 24
Совместимость 26
Базы данных — Interbase и локальные данные 27
Базы данных — прочие SQL сервера 28
Общие вопросы по Delphi и данному FAQ (часть 2) 29
Базы данных — компоненты и VCL. 29
Компоненты и VCL 31
Общие вопросы по Delphi и данному FAQ (часть 3) 34
Object Pascal и Windows API 34
Разное 37
Полезные хитрости 38
Вопросы по Delphi 1.0 38
Вопросы общего характера 38
Delphi и Visual Basic 39
Базы данных 40
Object Pascal и Windows API 40
Компоненты и VCL 41
Разное 41
Вопросы по Delphi 2.0 41
Что нового в Delphi 2.0 по сравнения с Delphi 1.0? 41
Вопросы общего характера 41
Базы данных 44
Object Pascal и Windows API 44
Разное 44
Вопросы по Delphi 3.0 45
Вопросы общего характера 45
Object Pascal и Windows API 45
Delphi, С++ Builder и базы данных: вопросы и ответы 46
Delphi VCL FAQ 48
Илон Маск рекомендует:  Dos fn 32h дать информацию dos о диске

Лучшие электронные книги в формате fb2
Наш портал – это библиотека интересных электронных книг разнообразных жанров. Здесь вы найдете произведения как российских, так и зарубежных писателей. Все электронные книги, представленные на нашем сайте, можно скачать бесплатно. Наша библиотека содержит только лучшие бесплатные электронные книги, ведь каждую электронную книгу мы тщательно изучаем перед добавлением в базу. Мы выбираем интереснейшие произведения в удобном формате fb2, все они достойны вашего внимания. Чтение электронных книг наверняка принесет вам удовольствие. Всё что, что вам нужно сделать, — найти и скачать книгу, которая понравится вам по заголовку и описанию.
Библиотека fb2-электронных книг – полезнейшее изобретение человечества. Для того чтобы, читать книгу, вам нужно просто загрузить ее с нашего сайта. Вы можете наслаждаться чтением, не совершая лишние траты. Электронная книга, в отличие от бумажной, обладает множеством преимуществ. Вы экономите время и силы, не совершая утомительные походы по магазинам. Вам также не нужно обременять себя ношением тяжеловесной макулатуры. Скачать и читать электронную книгу легко и просто . Мы позаботились о том, чтобы вам всегда было что почитать. Электронная книга fb2 принесет вам море положительных эмоций: она способна поделиться с вами мудростью, поднять настроение или просто скрасить досуг.

Faq затенить кнопку закрыть в заголовке формы

Через ShowModal показываю дочернюю форму. Но нажатию на кнопке в этой форме выполняетя долгая операция. За это время я должен запретить закрыть окно (в ней только крестик).
Делаю это так:

AnalogXP можно сделать так .

Так форма ведь и не закроется, пока ты обработчик на форме не завершится.


Добавлено 15.09.08, 16:27

В смысле — недоработка?

вопрос возникает сам собой, а зачем закрытие ты можешь произвести и через какую-нибудь свою кнопку вызовом метода Close .

По нажатию кнопки нельзя запускать «долгие операции» непосредственно из колбэка диалога, в этом случае все поступающие сообщения в диалог не обрабатываются(перетаскивание окна,перерисовка , нажатие других контролов. )

Еще остается Alt+F4

если нужно обрабатывать «долгие операции» как результат отклика на нажатие кнопки, у вас есть два способа, в
«долгих операциях» понавтыкать TranslateMessage, DispatchMessage для данного диалога, что есть не совсем красиво, или сделать это как положено, вынести обработку «долгой операции» в отдельный поток, в этом случае все сообщения винды будут нормально обрабатываться диалогом, а «долгая обработка» будет вошкаться в отдельном потоке.(В этом случае даже если обработка будет грузить проц по 100%, внешний вид окон не будет ущербным).
Для того чтобы форму не закрыли пока не закончена обработка, нужно отловить в колбэке диалога сообщение WM_SYSCOMMAND, далее наложить маску на WPARAM AND 0xFFF0, после чего проверить принятую команду на SC_CLOSE
ну что то типа этого

Добавляем дополнительную кнопку в заголовок формы

Чтобы добавить дополнительную кнопку, нам прийдётся создать обработчики для следующих событий:
WM_NCPAINT;//вызывается, когда перерисовывается не клиентская область формы
WM_NCACTIVATE; вызывается, когда заголовок формы становится активныи
WM_NCLBUTTONDOWN; вызывается, когда кнопка мыши нажимается на не клиентской области
WM_NCMOUSEMOVE; вызывается, когда курсор мыши передвигается по не клиентской области
WM_MOUSEMOVE;вызывается, когда курсор мыши передвигается по клиентской области
WM_LBUTTONUP; вызывается, когда кнопка мыши отпушена в клиентской области
WM_NCLBUTTONUP; вызывается, когда кнопка мыши отпушена в не клиентской области
WM_NCLBUTTONDBLCLK; вызывается при двойном щелчке мышкой в не клиентской области

Приведённый ниже код модифицирован, чтобы избавиться от нежелательного мерцания кнопки
будем использовать следующие переменные:

h1(Thandle) : хэндл контекста устройства всего окна, включая не клиентскую область.
pressed(boolean): индикатор, показывающий, нажата кнопка или нет.
focuslost(boolean): индикатор, показывающий, находится ли фокус на кнопке или нет.
rec(Trect): размер кнопки.

Собственно сам исходник: Комментарии специалистов:

Дата: 25 Августа 2000г.
Автор: NeNashevnashev@mail.ru

InvalidateRect на событие Resize ничего не даёт. Но даже без него
кнопка всё равно моргает при Resize формы. Надо ещё где-то убрать

Для рисования кнопок на заголовке окна лучше пользоваться
DrawFrameControl а не DrawEdge. Так и с не серыми настройками
интерфейса всё правильно будет. Да и проще так.

Названия функций, констант и т.п лучше писать так, как они в описаниях
даются, а не подряд маленькими буквами. Особенно для публикации. Так
оно и читается по большей части лучше, и в С такая привычка Вам не
помешает.

Сравнивать логическое значение с логической константой чтоб получить
логическое значение глупо, так как логическое значение у Вас уже есть.
тоесь вместо
if (pressed=true) and (focuslost=false)
лучше писать
if Pressed and not FocusLost

Для конструирования прямоугольников и точек из координат есть две
простые функции Rect и Point.

В общем Ваша процедура FormPaint может выглядеть так: Но вообще-то рисовать эту кнопку надо только при WM_NCPAINT, а не
всегда. И вычислять координаты по другому. Вдруг размер элементов
заголовка у юзера в системе не стандартный? А это просто настраивается.

Copyright © 2004-2020 «Delphi Sources». Delphi World FAQ

MagentaWAVE

Примеры и готовые решения для оформления блога и сайта. Разработка и дизайн шаблонов Blogger.

Как сделать кнопку «Закрыть» и скрыть элемент со страницы

Вариант 1. Кнопка «Закрыть» только на CSS

Вариант 2. Автоматическое добавление кнопки-крестика на jQuery

Алгоритм скрипта следующий: у всех указанных блоков, провести проверку на наличие в каждом элемента кнопки, если нет, то добавить, ничего не делать если присутствует. По клику на кнопку, скрыть ближайший блок с указанным селектором.

6 комментариев:

Вариант только на CSS. Непонятно как установить саму кнопку ? У меня отображается только надпись «Какой то контент» Объясните новичку как быть с кнопкой ? Кнопка это изображение ? Как её прикрутить )) ?

С большим трудом разобрался куда чего и как, часа два возился, в итоге получилось, блок скрывается по нажатию кнопки. А вот реклама от google помещённая в этот блок остаётся и никуда не исчезает. :(

С ней нужно «правильный» блок скрывать )

Здравствуйте, думаю очень полезная штука, обязательно воспользуюсь, но есть пара вопросов: можно как то прикрутить еще одну кнопку, но уже с добавлением (как закладки) не знаю как даже это обьяснить, допустим нажал пользователь «Х» как я понимаю пока не почистит куки, то он этот элемент уже не будет видеть при повторном заходе на сайт, это хорошо, но можно так сделать чтоб была еще кнопка «+» при нажатии на которую материал добавлялся как бы в личную страничку пользователя на сайте, другими словами сделать что то вроде корзины отмеченных пользователем материалов? И второй вопрос, как сделать такое выдвижное меню как у Вас слева на сайте? Спасибо.

Еще одну кнопку прикинуть можно, насчет «корзины» можно подумать. По поводу мену, надеюсь, опубликовать в ближайшее время статью.

Надо отключить все возможности закрытия формы


Мне надо сделать так, чтобы форму, которую я открываю, нельзя было закрыть ничем, кроме моих собственных кнопок на этой форме.
Я написал следующее:

Но в таком случае выходит ошибка: «Невозможно удалить кнопку, вставленную автоматически.»

Подскажите, как быть.

Элементарно по-моему
Есть событие ПередЗакрытием формы.
Создаете переменную в модуле, которая ничем не устанавливается кроме вашей собственной кнопки.

ufedor , спасибо. Попробовал.
Правда сама кнопка «Закрыть» в меню «Действия» висит, что не очень красиво.
Всё-таки её никак нельзя удалить?

В принципе мне вообще вся командная панель не нужна. Я попробовал её удалить, она удаляется без проблем.
Но остаётся пустое место там, где эта командная панель была, и никак не «схлопывается».
Как «схлопнуть» место, оставшееся после удаления командной панели?

Илон Маск рекомендует:  Что такое код msql_connect

Тонкости свойства disable у кнопок формы, отправляемой на сервер (Как делать кнопки неактивными)

Уже неоднократно на хабре (вот в этой публикации и в этой) ставился вопрос о том, что было бы хорошо кнопкам формы, отправляемой на сервер, ставить свойство disabled = «disabled» .

Однако, до сих пор так и не разобрались, зачем это нужно и как все-таки это делать. Казалось бы, что может быть проще и о чем здесь вообще можно разговаривать, ан нет — на поверку все оказалось не так тривиально. Сразу замечу, что нижеследующие рассуждения применимы к обеим типам форм: как отправляемым через обычный SUBMIT, так и с помощью AJAX.

Зачем нужно делать кнопки неактивными

  1. Чтобы пользователю стало очевидным, что он уже нажал на кнопку, и что форма отправляется
  2. Чтобы сервер не загружался лишними запросами, и чтобы уменьшить вероятность какой-либо ошибки

Понятно, что можно предотвратить лишние нажатия при помощи навешивания специальной визуализации, говорящей, что запрос принят и форма отправляется (простейший пример — показать какой-нибудь анимированный gif). Однако, кнопки-то при этом все равно останутся кликабельными, и самые нетерпеливые пользователи не применут воспользоваться такой возможностью. При этом, на эти дополнительные нажатия форма уже никак не сможет отреагировать (анимированный gif уже крутится), и фрустрация пользователя только увеличится.

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

Как делать кнопки неактивными

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

Почему недостаточно просто делать нажатую кнопку неактивной:

  1. Submit формы может произойти и по нажатию на Enter. Поэтому обработку кнопок надо вешать на событие onsubmit самой формы. К тому же, у формы может быть несколько кнопок, и было бы логичным делать их все неактивными, а не только ту кнопку, которую нажали.
  2. Если после сабмита формы вновь вернуться на страницу с формой (по кнопке «Назад» в браузере), то сработает кеширование: мы столкнемся с неактивными кнопками и не сможем отправить форму еще раз — без принудительной перезагрузки страницы с потерей всех заполненных ранее полей (Возврат к поисковой форме со страницы результатов поиска тут живейший пример).
  3. Если у формы несколько кнопок (например, «Опубликовать» и «Отмена»), то мы не сможем передать серверу, какая именно кнопка была нажата: неактивная кнопка не передает свое имя и значение — даже если мы делаем ее неактивной по событию onsubmit

Итак, сценарий создания неактивных кнопок

Кнопки закрытия на CSS

Варианты оформления закрывающих кнопок (close button) на CSS

Данные кнопки можно использовать для закрытия любых всплывающих меню, модальных или диалоговых окон

Вариант 1:

Большая кнопка, которая хорошо подойдет для закрытия полноэкранных модальных окон.

Вариант 2:

Кнопка с подписью «закрыть» при наведении.

Вариант 3:

Кнопка аналогичная предыдущей, но с другим ховер-эффектом

Вариант 4:

Складывающая в линию кнопка

Вариант 5:

3D кнопка с ховер-эффектом

Вариант 6:

Еще один вариант кнопки с подписью «закрыть» при наведении.

Вариант 7:


Простенькая маленькая кнопка

Вариант 8:

Кнопка открыть/закрыть с использованием библиотеки jQuery

Вариант 9:

Еще одна кнопка открыть/закрыть с использованием библиотеки jQuery

  • Опубликовано: 31.05.2020
  • Рубрики: Тексты, ссылки и кнопки
  • Метки: CSS, Сборники
  • 873 просмотра

Смотрите также:

Стрелки на CSS

Варианты оформления разнообразных стрелок на CSS

3D текст на CSS

3 варианта создания трехмерного текста на CSS

Круговая пульсация на элементах

Эффект круговой пульсации при наведении на кнопку, ссылку или блок

Добавить комментарий:

Разделы:

Проверенный хостинг:

Работаю с ним более 10 лет!

Хостинг от 119 рублей в месяц
VDS от 45 рублей в месяц
10 дней для бесплатного тестирования
Неограничено почтовых ящиков и доменов
Бесплатный SSL сертификат

Faq затенить кнопку закрыть в заголовке формы

Советы по работе с системой

Советы для написания программ-инсталляторов

Регистрация программ в меню «Пуск» Windows 95

Подобная проблема возникает при создании инсталляторов и деинсталляторов. Наиболее простой и гибкий путь — использование DDE. При этом посылаются запросы к PROGMAN. Для этого необходимо поместить на форму компонент для посылки DDE запросов — объект типа TDdeClientConv. Для определенности назовем его DDEClient. Затем добавим метод для запросов к PROGMAN:

var macrocmd:array[0..88] of char;

При вызове ProgmanCommand возвращает true, если посылка макроса была успешна. Система команд (основных) приведена ниже:

Create(Имя группы, путь к GRP файлу)

Создать группу с именем «Имя группы», причем в нем могут быть пробелы и знаки препинания. Путь к GRP файлу можно не указывать, тогда он создастся в каталоге Windows.


Delete(Имя группы)

Удалить группу с именем «Имя группы»

ShowGroup(Имя группы, состояние)

Показать группу в окне, причем состояние — число, определяющее параметры окна:

1 — нормальное состояние + активация

2 — миним.+ активация

3 — макс. + активация

4 — нормальное состояние

AddItem(командная строка, имя раздела, путь к иконке, индекс иконки (с 0), Xpos,Ypos, рабочий каталог, HotKey, Mimimize)

Добавить раздел к активной группе. В командной строке, имени размера и путях допустимы пробелы, Xpos и Ypos — координаты иконки в окне, лучше их не задавать, тогда PROGMAN использует значения по умолчанию для свободного места. HotKey — виртуальный код горячей клавиши. Mimimize — тип запуска, 0 — в обычном окне, <>0 — в минимизированном.

DeleteItem(имя раздела)

Удалить раздел с указанным именем в активной группе

ProgmanCommand(‘CreateGroup(Комплекс программ для каталогизации литературы,)’);

ProgmanCommand(‘AddItem(‘+path+’vbase.hlp,Справка по VBase,’+ path +’ vbase.hlp, 0, , , ‘+ path + ‘,,)’);

где path — строка типа String, содержащая полный путь к каталогу (‘C:\Catalog\’);

Как программно создать ярлык?

uses ShlObj, ComObj, ActiveX;

procedure CreateLink(const PathObj, PathLink, Desc, Param: string);

SLink := IObject as IShellLink;

PFile := IObject as IPersistFile;

with SLink do begin

Затенить кнопку «Закрыть» в заголовке формы

Следующий текст убирает команду «закрыть» из системного меню и одновременно делает серой кнопку «закрыть» в заголовке формы:

procedure TForm1.FormCreate(Sender: TObject);

hMenuHandle := GetSystemMenu(Handle, FALSE);

IF (hMenuHandle <> 0) THEN DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);

procedure FastFileCopy(Const InfileName, OutFileName: String; CallBack: TCallBack);

Const BufSize = 3*4*4096;

TBuffer = array [1..BufSize] of Byte;

infile, outfile : File;

if (InFileName <> OutFileName) then begin

SizeDone := 0; New(Buffer);


BlockRead(infile, Buffer^, BufSize, Size);

if Buffer <> Nil then Dispose(Buffer);

end else Raise EInOutError.Create(‘File cannot be copied into itself’);

Копирование методом потока

Procedure FileCopy(Const SourceFileName, TargetFileName: String);

S := TFileStream.Create(sourcefilename, fmOpenRead );

T := TFileStream.Create(targetfilename, fmOpenWrite or fmCreate);

Копирование методом LZExpand

procedure CopyFile(FromFileName, ToFileName : string);

FromFile, ToFile: File;

if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle)

Копирование методами Windows

uses ShellApi; // . важно

function WindowsCopyFile(FromFile, ToDir : string) : boolean;

var F : TShFileOpStruct;

F.Wnd := 0; F.wFunc := FO_COPY;

F.fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION;

procedure TForm1.Button1Click(Sender: TObject);

if not WindowsCopyFile(‘C:\UTIL\ARJ.EXE’, GetCurrentDir) then ShowMessage(‘Copy Failed’);

Как скопировать все файлы вместе с подкаталогами

procedure TForm1.Button1Click(Sender: TObject);

frombuf, tobuf: Array [0..128] of Char;

FillChar( frombuf, Sizeof(frombuf), 0 );

FillChar( tobuf, Sizeof(tobuf), 0 );

StrPCopy( frombuf, ‘h:\hook\*.*’ );

StrPCopy( tobuf, ‘d:\temp\brief’ );

With OpStruc DO Begin

fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;

Удаление каталога со всем содержимым

function DeleteDir(Dir : string) : boolean;

if IOResult<>0 then ;

if IOResult<>0 then begin


ShowMessage(‘Не могу войти в каталог: ‘+Dir); exit;

Found := FindFirst(‘*.*’, faAnyFile, SearchRec);

while Found = 0 do begin

if (SearchRec.Name<>‘.’)and(SearchRec.Name<>‘..’) then

Илон Маск рекомендует:  Что такое код ifx_free_char

if (SearchRec.Attr and faDirectory)<>0 then begin

if not DeleteDir(SearchRec.Name) then exit;

if not DeleteFile(SearchRec.Name) then begin

ShowMessage(‘Не могу удалить файл: ‘+SearchRec.Name); exit;

Определение системной информации

Часто при создании систем привязки программ к компьютеру или окон типа System Info или About Box необходимо определить данные о пользователе и о системе. Это можно сделать следующим образом (из примеров по Delphi — программа COA):

WinVer, WinFlags : LongInt;

hInstUser, Fmt : Word;

Buffer : ARRAY[0..30] OF Char;

LoadString(hInstUser, 514, Buffer, 30);

LoadString(hInstUser, 515, Buffer, 30);

LabelWinVer.Caption := Format(‘Windows %u.%.2u’,

LabelDosVer.Caption := Format(‘DOS %u.%.2u’,

IF WinFlags AND WF_ENHANCED > 0 THEN LabelWinMode.Caption := ‘386 Enhanced Mode’

Статьи 1
Советы по Delphi 1
Советы по работе с системой 1
Советы для написания программ-инсталляторов 1
Регистрация программ в меню «Пуск» Windows 95 1
Как программно создать ярлык? 1
Затенить кнопку «Закрыть» в заголовке формы 1
Копирование файлов 1
Как скопировать все файлы вместе с подкаталогами 1
Удаление каталога со всем содержимым 1
Определение системной информации 1
Как проинсталлировать свои шрифты? 2
Вставить какую-нибудь программу внутрь EXE файла 2
Как написать маленький инсталлятор? 2
Рисую две иконки 32х32 и 16х16, но под NT 32х32 не показывается! 2
Работа с принтером. 2
Система 2
Внешние модули (DLL), нити 6
Советы по работе с реестром. 7
Использование некоторых ключей реестра 7
Работа с реестром в Delphi 1 7
Объект INIFILES — работа с INI файлами. 7
Советы по работе с графикой 8
Разное 9
Глюки 14
Создание редактора карт в стратегиях типа WarCraft 14
Шпаргалка по ресурсам Windows-32 (для Delphi) 18
Стандартная технология доступа к ресурсам 18
Внутренний формат ресурсов Windows 18
Описание формата ресурсов в MS PE COFF. 19
Дамп памяти (взят из PE.TXT) 19
API 20
Программирование на основе Win32 API в Delphi 20
1. Введение 20
2. Существующие решения 20
3. Принципы построения API-библиотеки 20
4. Библиотека WinLite 21
5. Пример программы на основе библиотеки WinLite 23
KOL 23
Состояние проекта KOL 23
FAQ 24
Часто задаваемые вопросы по Borland Delphi 24
Общие вопросы по Delphi и данному FAQ (часть 1) 24
Введение 24
Вопросы общего характера 24
Совместимость 26
Базы данных — Interbase и локальные данные 27
Базы данных — прочие SQL сервера 28
Общие вопросы по Delphi и данному FAQ (часть 2) 29
Базы данных — компоненты и VCL. 29
Компоненты и VCL 31
Общие вопросы по Delphi и данному FAQ (часть 3) 34
Object Pascal и Windows API 34
Разное 37
Полезные хитрости 38
Вопросы по Delphi 1.0 38
Вопросы общего характера 38
Delphi и Visual Basic 39
Базы данных 40
Object Pascal и Windows API 40
Компоненты и VCL 41
Разное 41
Вопросы по Delphi 2.0 41
Что нового в Delphi 2.0 по сравнения с Delphi 1.0? 41
Вопросы общего характера 41
Базы данных 44
Object Pascal и Windows API 44
Разное 44
Вопросы по Delphi 3.0 45
Вопросы общего характера 45
Object Pascal и Windows API 45
Delphi, С++ Builder и базы данных: вопросы и ответы 46
Delphi VCL FAQ 48

Лучшие электронные книги в формате fb2
Наш портал – это библиотека интересных электронных книг разнообразных жанров. Здесь вы найдете произведения как российских, так и зарубежных писателей. Все электронные книги, представленные на нашем сайте, можно скачать бесплатно. Наша библиотека содержит только лучшие бесплатные электронные книги, ведь каждую электронную книгу мы тщательно изучаем перед добавлением в базу. Мы выбираем интереснейшие произведения в удобном формате fb2, все они достойны вашего внимания. Чтение электронных книг наверняка принесет вам удовольствие. Всё что, что вам нужно сделать, — найти и скачать книгу, которая понравится вам по заголовку и описанию.
Библиотека fb2-электронных книг – полезнейшее изобретение человечества. Для того чтобы, читать книгу, вам нужно просто загрузить ее с нашего сайта. Вы можете наслаждаться чтением, не совершая лишние траты. Электронная книга, в отличие от бумажной, обладает множеством преимуществ. Вы экономите время и силы, не совершая утомительные походы по магазинам. Вам также не нужно обременять себя ношением тяжеловесной макулатуры. Скачать и читать электронную книгу легко и просто . Мы позаботились о том, чтобы вам всегда было что почитать. Электронная книга fb2 принесет вам море положительных эмоций: она способна поделиться с вами мудростью, поднять настроение или просто скрасить досуг.

Форма при закрытии просит сохранить изменения. Как закрыть без сохранения?

Модифицированность (Modified)
Использование: Чтение и запись.
Описание: Тип: Булево. Признак изменения (модифицированности) данных в форме.
Модифицированность отображается символом (*) в заголовке окна формы.
Истина — изменена.

Похожие FAQ

Еще в этой же категории

Как на управляемой форме разместить список регистра сведений с отбором? 14
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом » ДинамическийСписок» В поле » Основная табли Поле выбора

Заполнение списка значений в элементе поле выбора на форме 9
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Как установить параметр динамического списка? 8
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма

Программное создание таблицы значений с условным оформлением 6
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Форма

Как убрать меню в заголовке окна.

Как убрать меню в заголовке окна.В Qt можно убрать в заголовки окна кнопку закрыть окно, свернуть окно и кнопку раскрыть окно. Но если нажать в левом верхнем углу окна то появляется меню где есть еще дополнительные пункты как убрать это меню.Пробовал разные комбинации флагов все ровно меню могу вызвать.

В Qt можно только выставлять хинты для Windows Manager’a, а убирать ничего нельзя. В данном случае аналогично, это меню рисует WM, так что копать в сторону его документации и стандартов Free Desktop Windows Hints.

Если сбросит от флаг Qt::X11BypassWindowManagerHint рамка окна пропадает.А без нее не гут.

Ну рисуй свою рамку.

Аноним выше дело сказал. Иначе никак.

Может кто знает как вообще выключить Window menu

Сказали же : в настройках WM смотришь насчёт обрамления и что на нём должно находиться.

Ткните носом где в Linux выключить Window menu.Нашел как отключить в заголовке окна, нашел как отключить горячие клавиши вызова Window menu. Так это меню можно вызвать и правой кнопкой мыши при наведении на заголовок окна и в трее. Может кто знает как в системе можно отключить это хорошие меню. Операционка CentOS 6.5. Буду безмерно благодарен если кто знает как это делать.

Я пользуюсь Xfce4. WM в нём Xfce4-wm, соответственно. В настройках Диспетчера окон на вкладке «Стиль» можно убрать кнопку «Меню» из заголовка окна, перетащив соответствующий элемент из категории «Активные» в категорию «Скрытые». То же самое можно сделать с другими кнопками.

Как это делается в Qt — не знаю. Зависит от используемого WM и его инструмента настроек.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL