Просмотр полной версии : Дельфи (Вопросы)
Кто знает можно как-нить сделать так, чтобы прога отрисовывала моим шрифтом текст в самой себе?
То есть шрифта у юзера нет в системе, он есть скажем либо в корне папки с программой, либо запрятан в самой программе (кстати как это можно сделать?). И при работе с программой весь текст (хотя бы меню) выводился бы именно этим шрифтом.
Foxter, ты имеешь ввиду, что к примеру в проге(в контекстном меню) нужно сделать? приблизительно-бы сделал скриншот того, как должно и что именно выглядеть, а то не очень че-то понятно :).
AlphaOmega
02.02.2006, 19:20
Foxter, попробуй так
procedure TForm1.FormCreate(Sender: TObject);
begin
AddFontResource(PChar(ExtractFilePath(ParamStr(0) + 'YourFont.TTF')));
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
RemoveFontResource(PChar(ExtractFilePath(ParamStr( 0) + 'YourFont.TTF')));
SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
end;
неа... не получилось...
сам фонт положил в папку с exe-шником
AlphaOmega
02.02.2006, 21:36
Ээ.... я думаю этот код что я привёл, только инициализирует шрифт в прогу. Далее её надо как-то присвоить к объектам. Как это сделать - не знаю....
ладно, думаю в процессе еще разберемся...
еще вопрос: как можно сделать менюшку как в офисе?
AlphaOmega
03.02.2006, 23:00
ладно, думаю в процессе еще разберемся...
еще вопрос: как можно сделать менюшку как в офисе?
http://img294.imageshack.us/img294/1959/officemenu9hy.jpg
Это вроде как тулбар, а не менюшка.
Я полагаю для делфей есть специальные графические компоненты позволяющие это делать...
AlphaOmega
03.02.2006, 23:07
а не знаешь где взять?
Поищи на следующих ресурсах:
http://www.torry.net/
http://delphi.icm.edu.pl/
и в google поищи "delphi components"
все кто пользовался QIP-ом знает что там есть такая штука как RUS2LAT и наоборот.
н-р: Татьяна -> Tatyana
а как это организовать в дельфи? ясное дело что это должно быть в array-ях.. но как?
в основном надо только с RUS2LAT.
AlphaOmega
15.02.2006, 19:05
все кто пользовался QIP-ом знает что там есть такая штука как RUS2LAT и наоборот.
н-р: Татьяна -> Tatyana
а как это организовать в дельфи? ясное дело что это должно быть в array-ях.. но как?
в основном надо только с RUS2LAT.
Можно пойти обходным путём (если срочно):
запускаешь цикл от 1 до Х (кол-во букв)
проверка - если буква ХХ, то на выходе УУ
и всё...
могу пример дать
могу пример дать
да, было бы неплохо....
AlphaOmega
15.02.2006, 19:38
Значит вот образец функции
p.s.: могут быть ошибки в синтаксисе иби я пишу вообще на С++, а дельфи знаю постольку-поскольку...
function RUStoLAT(symbol: Char): Char;
var Result: Char;
begin
if symbol = 'a' then Result = 'a';
if symbol = 'б' then Result = 'b';
if symbol = 'в' then Result = 'v';
... (сюда остальные буквы)
if symbol = 'э' then Result = 'e';
if symbol = 'ю' then Result = 'yu';
if symbol = 'я' then Result = 'ya';
end;
ну а дальше в любом месте (где надо):
var Russian, Translit : string; (исходная и конечная строки)
непосредственно обработка текста:
var i : Integer;
begin
Translit := Russian;
for i := 0 to (Length(Russian) - 1) do
Translit[i] := RUStoLAT(Russian[i]);
end;
вроде бы так.
если что - могу написать ПРАВИЛЬНО на С++, а потом другие мемберы форума могут просто перевести это на правильный дельф
Относительно последнего вопроса... Rus2Lat можно сделать и так:
unit Unit1;
interface
uses
SysUtils,Forms,Dialogs,StdCtrls,Controls,Classes;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function rus2lat(data:string):string;
var a: array [1..30] of string;
i,L,j,k:byte;
Rus,Lat,sout:string;
begin
sout:='';
L:=Length(data);
Rus:='абвгдежзиклмнопрстуфхю'; //собственно эти строки и служат
Lat:='abvgdegziklmnoprstyfhu'; //для перевода RUS символов в ENG
for i:=1 to L do
begin
for j:=1 to 23 do
if data[i]=Rus[j] then a[i]:=Lat[j]
else
if AnsiLowerCase(data[i])=Rus[j] then a[i]:=AnsiUpperCase(Lat[j]);
end;
for k:=1 to L do sout:=sout+a[k];
Rus2Lat:=sout;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Caption:=rus2lat(Edit1.Text);
end;
end.
На форму бросаем TEdit, TLabel и TButton... проверил, работает...хотя строковые переменные Rus и Lat скорей всего надо будет переписать. Эти только для примера.
короче вопрос такой.
на форме расположены:
DBComboBox1 и DBComboBox2
оба завязаны на одну таблицу с двумя столбцами. Один на один столбец а второй соответственно на второй.
таблица содержит данные типа:
Дом 12345
Дом 23456
Дом 34567
Работа 12345
Работа 23456
Сотовый 123456
Вот как организовать событие OnChange для первого, чтобы при выборе из списка чего-либо - второй фильтровался сам и выбирал только выбранные в соответствии с первым данные.
скажем при выборе
Дом
выбирались бы только те данные что под Дом подходят (и их можно увидеть во втором DBComboBox)
AlphaOmega
19.04.2006, 22:22
короче вопрос такой...
Вообщем попробуй так (я объясню на логическом языке, а ты сам на дельфи переведи).
Пусть на форме три контроля (списка) 1 2 и 3
в 1-ом только названия, вот втором и названия и цифры, в третьем только цифры. Видимы 1 и 3-ий.
//-----------------------------------------------------
OnChange
{
очищаешь DBComboBox3;
for (int i = 0; i < DBComboBox2.Items.Count; i++)
{
если DBComboBox1.Text равняется DBComboBox2.Items.Strings[i].SubString(1,DBComboBox1.Text.Length())
тогда DBComboBox3.Items.Add(DBComboBox2.Items.Strings[i].SubString(DBComboBox1.Text.Length()+1, 255) )
}
}
//-----------------------------------------------------
вот такой вот принцип...
Возникла небольшая проблема, может кто сможет помочь? В общем, дело в следующем. Имеется некоторая API функция, возвращающая в качестве результата указатель на массив размера size. Каким образом можно преобразовать возвращаемый массив в стринговый массив?
var
.....
param:byte;
.....
.....
_API_function (...,...,...,@param,@size,...,...);
.....
добавлено
извиняюсь, проблема решилась элементарно...
Такой вот вопрос, вернее просьба. Есть у кого нить компилятор от третьей дельфи dcc32.exe. Если есть, был бы признателен.
Вопрос... как установить такую хитрую ловушку, которая перехватывает системные сообщения пользователя об удалении файла? Это из серии Win API про HOOK функции...
2 Foxter Ну что, разобрался со шрифтами в иенюшке программы? Если да, то подскажи как? ;)
все кто пользовался QIP-ом знает что там есть такая штука как RUS2LAT и наоборот.
н-р: Татьяна -> Tatyana
а как это организовать в дельфи? ясное дело что это должно быть в array-ях.. но как?
в основном надо только с RUS2LAT.
для рус-то-лат сделать можно тупо:
Обработать в цикле строку
string res = '';
for i=1 to Length(str) do
begin
if copy(str, i,1) = 'Б' then res+='B'
...
т.д. все условия для всех букв алфавита
end;
Мне нужен крэк на домашнюю бухгалтерию. Прошу вышлите мне его на е-майл!
win-kim добавил 23.10.2006 в 07:49
крэк касательно топика
http://www.foxter.ru/showthread.php?t=594
Powered by vBulletin, Copyright ©2000-2026, Jelsoft Enterprises Ltd.