Отправляет email-рассылки с помощью сервиса Sendsay

Рассылка сайта Delphi coding

  Все выпуски  

Рассылка сайта Delphi coding


Информационный Канал Subscribe.Ru

Рассылка сайта Delphi Coding

Выпуск от 30 Сентября 2005 года. Noil.pri.ee

Приглашаються авторы статей для сотрудничества с сайтом. Подробности о том как добавить свою статью на сервер читайте здесь

На сайте Delphi Coding собрано большое количество статей, книг и различной компьютерной документации. В рассылке вы сможете увидеть последнии поступления на сайте, а также более подробно ознакомиться с некоторыми материалами.

Желаем Вам приятного чтения.


Архивы статей по различным тематикам Delphi

Delphi и XakepСкачать (Статей: 2)
Графика в DelphiСкачать (Статей: 6)
Работа с системойСкачать (Статей: 9)
Защита данныхСкачать (Статей: 2)
РазноеСкачать (Статей: 8)
Работа со звукомСкачать (Статей: 5)
АлгоритмыСкачать (Статей: 14)
WinApiСкачать (Статей: 3)
KOL и MCKСкачать (Статей: 10)
Программирование игрСкачать (Статей: 6)
Delphi и ActiveXСкачать (Статей: 4)
Delphi НачинаюшимСкачать (Статей: 2)
ОтладкаСкачать (Статей: 2)
COBRA и COMСкачать (Статей: 3)

Коллекции статей

Коллекция статей № 1Скачать (Статей: 20)
Коллекция статей № 2Скачать (Статей: 20)
Коллекция статей № 3Скачать (Статей: 20)
Коллекция статей № 4Скачать (Статей: 20)

Последнии файлы

WinApiCalc by Dem@nXP в категории Система

Пример WinApi программирования от Dem@nXP. Рассмотрены основы "минимального приложения": создание формы, кнопок, поля ввода, метки, меню, таймера. Всё сопроваждено прекрасными комментариями.

Подробнее...Скачать


TDragWith EffectsObject в категории Система

Очень часто нужно иметь возможность внутри программы перетаскивать объекты из одного компонента в другой. Например, нужно перетаскивать строки между двумя ListBox.ами. Задача несложная, но нудная, особенно если решать ее по всем правилам с правильными курсорами.

Подробнее...Скачать


Memory Map в категории Система

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

Подробнее...Скачать


GruCredits в категории Оформление

Компонент эмитирует титры, как в фильмах.

Подробнее...Скачать


AnyDAC в категории Невизуальные

Бесплатные компоненты для доступа к БД Oracle, MSSQL, MySQL, DB2, Sybase ASA, MSAccess, dbExpress и ODBC.

Подробнее...Скачать


EhLib 3.6 Beta в категории Библиотеки компонентов

EhLib 3.6 содержит компоненты и классы для Borland Delphi 4-9 и C++ Builder 4-6, направлена на расширение возможностей клиентской части программы базы данных, при взаимодействии пользователя с приложением

TDBGridhEh TDBGridEh поддерживает всю функциональность TDBGrid'а и добавляет новые возможности

TPrintDBGridEh TPrintDBGridEh предназначена для предварительного просмотра и печати компоненты TDBGridEh:

TDBLookupComboboxEh TDBLookupComboboxEh обеспечивает всю функциональность стандартного компонента TDBLookupCombobox и добавляет несколько новых возможностей

TDBEditEh TDBEditEh предназначена для редактирования строковых значений или значений полей базы данных.

TDBDateTimeEditEh TDBDateTimeEditEh предназначена для редактирования даты или времени или значений полей базы данных.

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

TDBNumberEditEh TDBNumberEditEh предназначена для редактирования числовых значений или значений полей базы данных.

TDBSumList Компонента предназначена для подсчета сумм и количества записей в TDataSet'е с динамическим отслеживанием изменений.

TPreviewBox Позволяет создавать настраиваемое окно предварительного просмотра.

TPrinterPreview (no visual object) Позволяет записывать необходимые для печати данные в буфер для последующего вывода их на принтер или на экран.

TPropStorageEh Реализует технологию для сохранения свойств компонент в хранилище свойств таких как ini файлы, реестр и т.д.

Подробнее...Скачать


Animated Form Effect в категории Различные эффекты

Интересный компонент, "оживляющий" стандартные формы

Подробнее...Скачать


ESBMaths в категории Математика

Обширный набор математических функций. Файл справки прилагается.

Подробнее...Скачать


NeuralBase в категории Сеть

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

Подробнее...Скачать


GeneBase в категории Математика

Набор невизуальных компонетов для работы с генетическими алгоритмами

Подробнее...Скачать


Статья

Выравнивание текста

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

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

Эта программа выводит на экран текст из файла C:\text.txt, выравнивая его по двум краям.


Листинг 1. Выравниваниетекста
type
...
TLine=record
s:string;
wrap:boolean;
length:integer;
end;

var
Form1:TForm1;

implementation

{$R*.DFM}

const
FileName='‌C:\text.txt'‌;

var
s:string;
bm:TBitMap;
LineH:integer;
MaxTextWidth:integer;

procedureTForm1.FormCreate(Sender:TObject);
var
F:TFileStream;
buf:array[0..127]ofchar;
l:integer;
begin
ScrollBar1.Kind:=sbVertical;
bm:=TBitMap.Create;
withbm.Canvas.Fontdobegin
Name:='‌Serif'‌;
Size:=12;
end;
LineH:=bm.Canvas.TextHeight('‌123'‌);

ifnotFileExists(FileName)thenbegin
ShowMessage('‌Cannotfindfile'‌+FileName);
Exit;
end;
F:=TFileStream.Create(FileName,fmOpenRead);
repeat
l:=F.Read(buf,128);
ifl=128
thens:=s+buf
elses:=s+copy(buf,1,l);
untill<128;
F.Destroy;
end;

procedureTForm1.FormResize(Sender:TObject);
begin
PaintBox1.Left:=0;
PaintBox1.Top:=0;
PaintBox1.Height:=Form1.ClientHeight;
PaintBox1.Width:=Form1.ClientWidth-ScrollBar1.Width;
ScrollBar1.Left:=PaintBox1.Width;
ScrollBar1.Top:=0;
ScrollBar1.Height:=PaintBox1.Height;
bm.Width:=PaintBox1.Width;
bm.Height:=PaintBox1.Height;
ScrollBar1.Max:=1000;
MaxTextWidth:=PaintBox1.Width-20;
end;

functionRealTextWidth(s:string):integer;
var
i:integer;
begin
result:=bm.Canvas.TextWidth(s);
fori:=1toLength(s)do
ifs[i]=#9then
inc(result,40-bm.Canvas.TextWidth(#9));
end;

functionGetLine(index:integer):TLine;
var
i:integer;
s1:string;
first:integer;
begin
if(s[index]=#13)and(s[index+1]=#10)thenbegin
result.s:='‌'‌;
result.length:=2;
result.wrap:=true;
Exit;
end;
first:=index;
while(first<=Length(s))and(s[first]in[#32])doinc(first);
i:=first;
repeat
while(i<=Length(s))and(not(s[i]in[#9,#32]))and(s[i]<>#13)do
inc(i);
s1:=copy(s,first,i-index);
inc(i);
until(i>=Length(s))or(s[i-1]=#13)or(RealTextWidth(s1)>MaxTextWidth);
ifRealTextWidth(s1)>MaxTextWidththenbegin
result.wrap:=false;
ifithenbegin
dec(i,2);
while(i>0)and(not(s[i]in[#9,#32]))dodec(i);
result.Length:=i-index;
while(i>0)and(s[i]in[#9,#32])dodec(i);
end;
result.s:=copy(s,first,i-index+1);
ifresult.s[length(result.s)]=#32then
delete(result.s,length(result.s),1);
endelsebegin
result.length:=i-index+1;
s1:=copy(s,first,i-index+1);
iflength(s1)>0thenbegin
ifs1[Length(s1)]=#9
thendelete(s1,Length(s1),1);
ifs1[length(s1)-1]+s1[length(s1)]=#13#10
thendelete(s1,length(s1)-1,2);
end;
result.s:=s1;
result.wrap:=true;
end;
end;


proceduredraw;
var
i,j:integer;
line:TLine;
OneWord:string;
LineN:integer;
SpaceCount:integer;
TextLeft:integer;
shift,allshift:integer;
d:integer;
LineCount:integer;
begin
withbm.Canvasdobegin
FillRect(ClipRect);
i:=1;
LineCount:=0;
forj:=1toForm1.ScrollBar1.Positiondobegin
line:=GetLine(i);
inc(i,line.length);
inc(LineCount);
end;
LineN:=0;
repeat
line:=GetLine(i);
SpaceCount:=0;
TextLeft:=0;
forj:=1toLength(line.s)do
ifline.s[j]=#32theninc(SpaceCount);
ifline.wrap=false
thenallshift:=MaxTextWidth-RealTextWidth(line.s)
elseallshift:=0;
ifallshift>40*SpaceCountthenallshift:=0;
shift:=0;
forj:=1toLength(line.s)dobegin
if(not(line.s[j]in[#9,#32]))and(jthenbegin
OneWord:=OneWord+line.s[j];
endelsebegin
OneWord:=OneWord+line.s[j];
ifOneWord=#9thenbegin
inc(TextLeft,40);
endelsebegin
ifOneWord=#13#10thenbegin
inc(LineN);
endelsebegin
TextOut(10+TextLeft,LineN*LineH,OneWord);
ifSpaceCount=0
thend:=0
elsed:=(allshift-shift)div(SpaceCount);
inc(shift,d);
inc(TextLeft,TextWidth(OneWord)+d);
dec(SpaceCount);
end;
end;
OneWord:='‌'‌;
end;
end;
inc(i,line.length);
inc(LineN);
until(LineN*LineH>Form1.PaintBox1.Height)or(i>=Length(s));
repeat
line:=GetLine(i);
inc(i,line.length);
inc(LineCount);
untili>=Length(s);
inc(LineCount,LineN);
Form1.ScrollBar1.Max:=LineCount-
Form1.PaintBox1.HeightdivLineH;
end;
Form1.PaintBox1.Canvas.Draw(0,0,bm);
end;

procedureTForm1.PaintBox1Paint(Sender:TObject);
begin
draw;
end;

procedureTForm1.ScrollBar1Change(Sender:TObject);
begin
draw;
end;

Посетите наши форумы:

Delphi, Kylix, Pascal
Delphi - общие вопросы | WinAPI | Работа с сетью | Delphi и Multimedia | Базы данных | Работа с oc Windows | Курилка | Паскаль | Delphi.Net | Kylix

Языки программирования
C++ | Java | .NET | Ассемблер

Web Технологии
Php | Perl | Asp | Html

Програмное обеспечение
Софт для Windows | Oc Windows | Linux | BSD

Разное
Железо | Взлом и защита | Периферия | Внекомпьютерная жизнь | Объявления

Дружественные рассылки

Рассылки Subscribe.Ru
Интернет для Delphi-программиста

На этом позвольте проститься с Вами и пожелать удачи. Свои замечания и предложения отправляйте на е-майл, указанный ниже. С уважением, Виталий (NoilTeam@gmail.com)

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphicoding
Архив рассылки
Отписаться
Вспомнить пароль

В избранное