Виртуальная библиотека Delphi - [12]
3. Новичку в реестре можно запросто запутаться или (боже упаси), чего-нибудь не то изменить.
Поэтому для хранения параметров настройки программы удобно использовать стандартные INI файлы Windows. Работа с INI файлами ведется при помощи объекта TIniFiles модуля IniFiles. Краткое описание методов объекта TIniFiles дано ниже.
>Constructor Create('d:\test.INI');
Создать экземпляр объекта и связать его с файлом. Если такого файла нет, то он создается, но только тогда, когда произведете в него запись информации.
>WriteBool(const Section, Ident: string; Value: Boolean);
Присвоить элементу с именем Ident раздела Section значение типа boolean
>WriteInteger(const Section, Ident: string; Value: Longint);
Присвоить элементу с именем Ident раздела Section значение типа Longint
>WriteString(const Section, Ident, Value: string);
Присвоить элементу с именем Ident раздела Section значение типа String
>ReadSection (const Section: string; Strings: TStrings);
Прочитать имена всех корректно описанных переменных раздела Section (некорректно описанные опускаются)
>ReadSectionValues(const Section: string; Strings: TStrings);
Прочитать имена и значения всех корректно описанных переменных раздела Section. Формат :
>имя_переменной = значение
>EraseSection(const Section: string);
Удалить раздел Section со всем содержимым
>ReadBool(const Section, Ident: string; Default: Boolean): Boolean;
Прочитать значение переменной типа Boolean раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.
>ReadInteger(const Section, Ident: string; Default: Longint): Longint;
Прочитать значение переменной типа Longint раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.
>ReadString(const Section, Ident, Default: string): string;
Прочитать значение переменной типа String раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.
>Free;
Закрыть и освободить ресурс. Необходимо вызвать при завершении работы с INI файлом
>Property Values[const Name: string]: string;
Доступ к существующему параметру по имени Name
Пример :
>Procedure TForm1.FormClose(Sender: TObject);
>var
>IniFile:TIniFile;
>begin
> IniFile := TIniFile.Create('d:\test.INI'); { Создали экземпляр объекта }
> IniFile.WriteBool('Options', 'Sound', True); { Секция Options: Sound:=true }
> IniFile.WriteInteger('Options', 'Level', 3); { Секция Options: Level:=3 }
> IniFile.WriteString('Options' , 'Secret password', Pass);
> { Секция Options: в Secret password записать значение переменной Pass }
> IniFile.ReadSection('Options ', memo1.lines); { Читаем имена переменных}
> IniFile.ReadSectionValues('Options ', memo2.lines); { Читаем имена и значения }
> IniFile.Free; { Закрыли файл, уничтожили объект и освободили память }
>end;
Советы по работе с графикой
Как работать с палитрой в Delphi? На форме установлен TImage и видна картинка (*.BMP файл), как изменить у него палитру цветов ?
Палитра в TBitmap и TMetaFile доступна через property Palette. Если палитра имеется (что совсем необязательно), то Palette<>0:
>procedure TMain.BitBtnClick(Sender: TObject);
>var
> Palette : HPalette;
> PaletteSize : Integer;
> LogSize: Integer;
> LogPalette: PLogPalette;
> Red : Byte;
>begin
> Palette := Image.Picture.Bitmap.ReleasePalette;
> // здесь можно использовать просто Image.Picture.Bitmap.Palette, но я не
> // знаю, удаляются ли ненужные палитры автоматически
> if Palette=0 then exit; //Палитра отсутствует
> PaletteSize := 0;
> if GetObject(Palette, SizeOf(PaletteSize), @PaletteSize) = 0 then Exit;
> // Количество элементов в палитре = paletteSize
> if PaletteSize = 0 then Exit; // палитра пустая
> // определение размера палитры
> LogSize := SizeOf(TLogPalette) + (PaletteSize - 1) * SizeOf(TPaletteEntry);
> GetMem(LogPalette, LogSize);
> try
> // заполнение полей логической палитры
> with LogPalette^ do begin
> palVersion := $0300; palNumEntries := PaletteSize;
> GetPaletteEntries(Palette, 0, PaletteSize, palPalEntry);
> // делаете что нужно с палитрой, например:
> Red := palPalEntry[PaletteSize-1].peRed;
> Edit1.Text := 'Красная составляющего последнего элемента палитры ='+IntToStr(Red);
> palPalEntry[PaletteSize-1].peRed := 0;
> //.......................................
> end;
> // завершение работы
> Image.Picture.Bitmap.Palette := CreatePalette(LogPalette^);
> finally
> FreeMem(LogPalette, LogSize);
> // я должен позаботиться сам об удалении Released Palette
> DeleteObject(Palette);
> end;
>end;
>{ Этот модуль заполняет фон формы рисунком bor6.bmp (256 цветов)
>и меняет его палитру при нажатии кнопки }
>unit bmpformu;
>interface
>uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
>type TBmpForm = class(TForm)
> Button1: TButton;
> procedure FormDestroy(Sender: TObject);
> procedure FormPaint(Sender: TObject);
> procedure Button1Click(Sender: TObject);
> procedure FormCreate(Sender: TObject);
>private
> Bitmap: TBitmap;
> procedure ScrambleBitmap;
> procedure WMEraseBkgnd(var m: TWMEraseBkgnd); message WM_ERASEBKGND;
>end;
>var
> BmpForm: TBmpForm;
>implementation
>{$R *.DFM}
>procedure TBmpForm.FormCreate(Sender: TObject);
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.