Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Я начинающий, подскажите пожалуйста, как...

257
25 февраля 2007 года
kosfiz
1.6K / / 18.09.2005
Уважаемые участники!
Если вы только начинаете осваивать Delphi или считаете, что ваш вопрос простой для более опытных участников форума, то задавайте его здесь, не надо создавать для этого отдельные темы.

Если вы размещаете вопрос здесь, то , пожалуйста, прочтите следующее:
1. когда будете задавать свой вопрос, то делайте это нажимая на "ответ"(не путать с "быстрый ответ") и кратко указывайте в "заголовке" тему своего вопроса;
2. опишите чего вы хотели добиться.
3. если у вас возникла какая-то ошибка, и вы не знаете как её исправить, то обязательно приведите текст самой ошибки;
4. если это необходимо, приведите фрагмент вашего кода(ни в коем случае не надо писать весь код), также при добавлении кода пользуйтесь тегами([code ] и [ /code]);
5. укажите версию Delphi, которую используете и все настройки проекта;
6. если у вас возникли проблемы с нестандартными компонентами, то обязательно приведите ссылку, по которой их можно скачать.
7. соблюдайте правила форума

Удачи.
Модераторы форума Delphi & Kylix: Delpher, kosfiz & OlgaKr
Если вы с чем-то несогласны или у вас есть предложения обращайтесь к модераторам в приват.
Страницы:
20K
09 марта 2007 года
А.Брей
7 / / 03.11.2006
Нужно поменять шрифт вкомпоненте Panel с простого на жырный. За ранее всем благодарен. С уважением к Вам А.Брей.
257
09 марта 2007 года
kosfiz
1.6K / / 18.09.2005
программно делается так:
 
Код:
Panel1.Font.Style:=Panel1.Font.Style+[fsBold]

если не программно, то так: Panel->Font->Style->fsBold=true.
20K
11 марта 2007 года
А.Брей
7 / / 03.11.2006
Panel1.Font.Style:=Panel1.Font.Style+[fsBold]

Не работает.Вывод-Ты злой и память твоя плохая.
26K
11 марта 2007 года
Gh0stik
10 / / 06.03.2007
Цитата: А.Брей
Panel1.Font.Style:=Panel1.Font.Style+[fsBold]

Не работает.Вывод-Ты злой и память твоя плохая.



Уважаемый, Вы бы так не торопились с выводами, код рабочий на все сто!!!
Как вариант возможных проблем могу только посоветовать - [COLOR="Purple"]поставьте в конце строки точку с запятой ";"[/COLOR] :cool:

А вообще прежде чем писать такие заявления моглибы просто объяснить в чем проблема!!!

375
21 марта 2007 года
dominator
199 / / 16.10.2003
Не приходилось особенно работать со строками на Дельфи/Паскале. Подскажите, пожалуйста, как получить первые несколько символов строки. Какая существует для этого функция?
Собственно, задача следующая: нужно прочитать строку (String), взять первые три символа, сверить со списком других строк. Если найдено соответствие, предпринять какие-либо действия.
Нашел функцию StrPos, которая, если сравниваемое значение будет найдено, возвратит позицию вхождения подстроки. Соответственно, наверное, можно будет сделать так:
if(StrPos(PChar(String1), PChar(String2)) <> nil) then begin
//Что-либо предпринимаем
end;
Дело за малым получить String2...
497
21 марта 2007 года
IL84
267 / / 24.04.2003
В Delphi очень хороший хэлп!
Цитата:

Returns a substring of a string or a segment of a dynamic array

Unit
System

Syntax

[Delphi] function Copy(S: string; Index: Integer; Count: Integer): string;

375
21 марта 2007 года
dominator
199 / / 16.10.2003
Спасибо! Сейчас попробую.
27K
22 марта 2007 года
Hohokara
1 / / 22.03.2007
Вот код он рабочий, но он вводит данные только в одну ячейку, а я бы хотел чтобы ввод производился в несколко обединенных ячеяк(Например в 3)....
 
Код:
i:=10
ExcelApplication1.Cells.Item[i,2].Value:=AdoTable1.FieldByName('Наименование').AsString;

Зарание спасибо!
11K
23 марта 2007 года
SCiPTAG
34 / / 14.11.2006
_-=Waite |{ey=-_
Люди подскажите как сделать так!
У меня есть в наличии Button1 и Label
Как сделать так при нажать на кнопку прога ждала нажатии любой клавиши!
И если нажата то она выведет на Label номер или названии нажатой кнопки.
497
23 марта 2007 года
IL84
267 / / 24.04.2003
1) Читаем правила форума и правильно именуем темы
2) Читаем хелп к Delphi и книги по программированию
3) Юзаем код:
 
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
        flag := 1;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
       if flag = 1 then Label1.Caption := Key;
end;
257
23 марта 2007 года
kosfiz
1.6K / / 18.09.2005
стоит поюзать гугл(ссылка), что-нибудь обязательно подойдет.
5.9K
23 марта 2007 года
Eksell
49 / / 16.11.2005
Всем привет!

Я пытаюсь связать ComboBox и ini-файл...
Значит я имею ini-файл такова типа:
[List]
1=abc
2=dfg
3=hij
...

Вопрос: Как можно добавить параметр... только так чтоб прога сама определяла число... например если последний там "3" тогда прога добавит параметр под номером 4... Если последний 5 - то добавит параметр под номером 6... и так далее...
Как работать с ini-файлами я знаю... у меня не получается сделать именно такой алгоритм который все это определяет...

Подскажите пожалуйста кому не трудно...
4.6K
23 марта 2007 года
Tokolist
268 / / 22.03.2007
Здесь два варианта (выбирай который подходит больше):

1. Считываешь все названия ключей секции с помощью

 
Код:
procedure ReadSection (const Section: string; Strings: TStrings);


В Strings.Count получаешь количество значений.

2. С помощью цикла и

 
Код:
function ValueExists (const Section, Ident: String): Boolean;


определяешь параметр с самым большим индексом.

Если не разобрался, то приведу работающий код :)
5.9K
23 марта 2007 года
Eksell
49 / / 16.11.2005
Tokolist, если тебе не трудно... дай примерчик. Я не очень понял как это можно реализовать... Буду очень признателен за помощь.

Спасибо заранее.
27K
24 марта 2007 года
ELFroot
1 / / 23.03.2007
привет всем а где достать Куликс:D ?
8
24 марта 2007 года
mfender
3.5K / / 15.06.2005
Цитата: Eksell
Tokolist, если тебе не трудно... дай примерчик. Я не очень понял как это можно реализовать... Буду очень признателен за помощь.

Спасибо заранее.


Ну вот самое простое:

Поставь на форме TEdit и TComboBox. Вот код юнита:

Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IniFiles, StdCtrls;
const
  IniFile = 'c:\myini.ini';
  IniSection = 'list';
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    ComboBox1: TComboBox;
    procedure FormCreate(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
  private
    Ini: TIniFile;
  public
    procedure ReadParams(Strings: TStrings; Section: string);
    procedure WriteParams(Strings: TStrings; Section: string);
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
  Ini := TIniFile.Create(IniFile);
  ComboBox1.Clear;
  ReadParams(ComboBox1.Items, IniSection);
end;
procedure TForm1.ReadParams(Strings: TStrings; Section: string);
var
  I: Integer;
  Keys: TStrings;
begin
  Strings.Clear;
  Keys := TStringList.Create;
  Ini.ReadSection(Section, Keys);
  for I := 0 to Keys.Count - 1 do
  begin
    Strings.Add(Ini.ReadString(Section, Keys, 'No Value'));
  end;
end;
procedure TForm1.WriteParams(Strings: TStrings; Section: string);
var
  I: Integer;
begin
  if Strings.Count <> 0 then
  begin
    Ini.EraseSection(Section);
    for I := 0 to Strings.Count - 1 do
    begin
      Ini.WriteString(Section, IntToStr(I), Strings);
    end;
    ReadParams(Strings, Section);
  end;
end;
procedure TForm1.Edit1Exit(Sender: TObject);
begin
  try
    if TEdit(Sender).Text <> '' then
    begin
      ComboBox1.Items.Add(TEdit(Sender).Text);
      WriteParams(ComboBox1.Items, IniSection);
    end;
  finally
    TEdit(Sender).Text := '';
  end;
end;
end.


Хотя я бы извратился и написал компонент на этот случай, руководствуясь самой идеей ООП...
257
24 марта 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=ELFroot]а где достать Куликс ?[/quote]
просто так не найдешь. есть варианты:
1. берешь в руки eMule и вперед искать: найдешь без проблем;
2. купить у себя в городе диск с Kylix'ом: могут возникнуть с этим проблемы, например у меня нигде не купить;
3. закажи на каком-нибудь сайте (диски почтой).
4.6K
24 марта 2007 года
Tokolist
268 / / 22.03.2007
Цитата:
Tokolist, если тебе не трудно... дай примерчик.



На самом деле все очень просто :)

Для первого варианта

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  ini: TIniFile;
  strs: TStrings;
begin
  ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'test.ini');
  strs := TStringList.Create;
  try
    ini.ReadSection('section', strs);
    ini.WriteString('section', IntToStr(strs.Count + 1), 'value');
  finally
    ini.Free;
    strs.Free;
  end;
end;


Для второго варианта

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
  ini: TIniFile;
begin
  ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'test.ini');
  try
    i := 1;
    while true do
    begin
      if not ini.ValueExists('section', IntToStr(i)) then
      begin
        ini.WriteString('section', IntToStr(i), 'value');
        Break;
      end;
      Inc(i);
    end;
  finally
    ini.Free;
  end;
end;


Чем они отличаются?
В первом случае нумерация продолжается с последнего значения в любом случае. Во втором же если удалить какое нибуть значение посередине, то следующее значение заменит его.

Пример

Код:
[section]
1=value
2=value
3=value
4=value
6=value
7=value
8=value
9=value
10=value
11=value


Обрати внимание что не хватает 5 параметра. Так вот, в первом варианте следующий параметр получает имя 12, а во втором случае - 5.
27K
24 марта 2007 года
Killir
1 / / 13.03.2007
Здравствуйте! Кто знает, объясните пожалуйста как в Дэлфи7 организовать вывод в файл. Причем мне нужно, чтобы значения строковых переменных TEdit вставлялись в word-овский файл не по порядку, а с четко определенными координатами. У меня будет шаблон файла word (договор об оформлении кредита), как обычно там после ФИО будет оставлено свободное место. Так вот, надо чтобы строка из TEdit'а (фамилия) вставилась в word-овском документе именно в то, предназначенное для нее свободное место. Заранее Спасибо.
17K
24 марта 2007 года
ivs_1
22 / / 22.01.2007
Как подписать название 2 строки первого столбца:eek:
7.0K
24 марта 2007 года
Rusd
88 / / 26.08.2006
Цитата: ivs_1
Как подписать название 2 строки первого столбца:eek:



В смысле записать строчку в ячейку?
В таком случае:

 
Код:
StringGrid1.Cells[0,1]:='строка';

Нумерация столбцов и строк начинается с нуля
257
25 марта 2007 года
kosfiz
1.6K / / 18.09.2005
2Killir
ознакомся с этой статьей, в ней все довольно подробно написано.
7.9K
25 марта 2007 года
user13
66 / / 07.11.2006
У меня два вопроса.
1. Как мне зделать чтобы моя форма всегда была по верх других окон ?
2. Как мне зделать чтобы моя форма всегла открывалась в нижнем провом углу ?
Зарание благодарю !
8
25 марта 2007 года
mfender
3.5K / / 15.06.2005
1. FormStyle := fsStayOnTop;
2. Где-то так:
 
Код:
procedure TForm1.FormShow(Sender: TObject);
begin
  Top := GetSystemmetrics(SM_CYSCREEN) - Height;
  Left := GetSystemMetrics(SM_CXSCREEN) - Width;
end;
7.9K
25 марта 2007 года
user13
66 / / 07.11.2006
По вроторому вопросу.
Я хотел сказать в нижнем правом углу над панелью задачь.
8
25 марта 2007 года
mfender
3.5K / / 15.06.2005
Цитата: user13
По вроторому вопросу.
Я хотел сказать в нижнем правом углу над панелью задачь.


гм... действительно... Как-то не подумал, что у людей ПЗ снизу, а не как у меня - слева...

Тогда такой вариант будет получше:

 
Код:
procedure TForm1.FormShow(Sender: TObject);
var
  R: TRect;
begin
  SystemParametersInfo(SPI_GETWORKAREA, 0, @R, 0);
  Top := R.Bottom - Height;
  Left := R.Right - Width;
end;
7.9K
25 марта 2007 года
user13
66 / / 07.11.2006
Как зделать чтобы программу нельзя было запустить два раза?

P.S я знаю что этот вопрос задвали раз 200 и в инет на него ответа полно но всёже кто знает если не сложно можна дать ссылку.
257
25 марта 2007 года
kosfiz
1.6K / / 18.09.2005
ну например так:
 
Код:
function CheckExeCopy:boolean;
begin
Result:=false;
CreateMutex(nil,true,'что-нибудь_заковыристое');
if GetLastError=ERROR_ALREADY_EXISTS then
 Result:=true;
end;

функция возвращает true когда уже запущена одна копия приложения и false, если нет.
7.9K
26 марта 2007 года
user13
66 / / 07.11.2006
Что-то не работает...
Помница там код был не такой грамозкий.
5.9K
26 марта 2007 года
Eksell
49 / / 16.11.2005
Спасибо вам большое Tokolist и mfender за помощь. )
Все работает как надо. Это то что мне было нужно.
Спасибо! )
257
26 марта 2007 года
kosfiz
1.6K / / 18.09.2005
2 user13
так ты про запуск программы спрашиваешь? или про форму? у меня код работает, т.е. если test.exe с этим кодом один раз уже запущена и я запускаю test.exe во второй раз, то функция возвращает true. кстати если все-таки про запуск приложения, то напиши как используешь функцию.
7.9K
26 марта 2007 года
user13
66 / / 07.11.2006
Цитата: kosfiz
2 user13
так ты про запуск программы спрашиваешь? или про форму? у меня код работает, т.е. если test.exe с этим кодом один раз уже запущена и я запускаю test.exe во второй раз, то функция возвращает true. кстати если все-таки про запуск приложения, то напиши как используешь функцию.


Разъесни как нада использовать её я чёта не понимаю !

257
26 марта 2007 года
kosfiz
1.6K / / 18.09.2005
в архиве примерчик программки(код + exe). запускаешь exe появляется MessageBox с сообщением, что запущенных копий программы нет, не нажимая в MessageBox'е OK(т.е. первая программка будет работать), запускаешь exe второй раз, результатом запуска будет появление MessageBox'а с сообщением о запущенной копии. все сводится к коду:
 
Код:
if CheckExeCopy then begin MessageBox(0,'программа уже запущена!','',0); exit; end;
7.9K
28 марта 2007 года
user13
66 / / 07.11.2006
Такой вопрос как мне зделать если файла нет то создать его
Я делаю так :
 
Код:
if not FileExists('Plugins\log\log\date.txt') then
 begin
 Rewrite(f,'Plugins\log\log\date.txt');
  end;

Но что-то тут не то, но что ?
5.9K
28 марта 2007 года
Eksell
49 / / 16.11.2005
Цитата: user13
Такой вопрос как мне зделать если файла нет то создать его
Я делаю так :
 
Код:
if not FileExists('Plugins\log\log\date.txt') then
 begin
 Rewrite(f,'Plugins\log\log\date.txt');
  end;

Но что-то тут не то, но что ?



Ты все делаешь правельно...

Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
  F : TextFile;
begin
  if not FileExists('alloc.txt') then
  begin
    AssignFile(F, 'alloc.txt');
    Rewrite(F, 'alloc.txt');
  end;

end;
7.9K
30 марта 2007 года
user13
66 / / 07.11.2006
У меня такой вопрос
Есть два приложения(1.exe) на одном приложении установленн компанент AdvAlertWindow
На другом(2.exe) одна кнопка
Так как мне зделать чтобы нажав кномпу на одном приложенни(2.exe) в
Другом приложении(1.exe) высветился AdvAlertWindow с тестом который отослали с 1.exe

Незнаю поняли вы меня или нет

Вот привиду пример как зделать тоже самое но не в компанент а Memo

Код:
var
  Form1: TForm1;
  wnd,cwnd:HWND;
implementation

{$R *.dfm}
function EnChWndCallBack(FormHandle:hWnd;l:pchar):boolean;stdcall;
var FormClass:array[0..255] of char;
begin
Result:=True;
GetClassName(FormHandle, FormClass, sizeof(FormClass));
if FormClass=string(l) then
 begin
  cwnd:=FormHandle;
  Result:=false;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
wnd:=FindWindow(nil,test');
if wnd <> 0 then begin
EnumChildWindows(wnd,@EnChWndCallBack,LParam(pchar('TMemo')));
if cwnd <> 0 then begin
SendMessage(cwnd,WM_SETTEXT,0,LParam(pchar('ksdasd')));
end;
end;
end;


После нажатия на кнопку в другом приложении под названтем test в Memo поевляется текс 'ksdasd'

А мне нада тоже самое зделать тока чтобы текст пошол в компанент

AdvAlertWindow

НАдеюсь вы меня поняли...
7.9K
30 марта 2007 года
user13
66 / / 07.11.2006
Ещё такой вопрос можно ли подключить компанент к dll файлу
9.5K
30 марта 2007 года
Borgir
97 / / 20.12.2006
Цитата: user13
У меня такой вопрос

................................

После нажатия на кнопку в другом приложении под названтем test в Memo поевляется текс 'ksdasd'

А мне нада тоже самое зделать тока чтобы текст пошол в компанент

AdvAlertWindow

НАдеюсь вы меня поняли...



Я конечно не знаю, что это за компонент такой AdvAlertWindow, но вообще насколько мне видится есть два пути:
1) Перебор компонентов-детей формы первого приложения на принадлежность их классу TAdvAlertWindow, и после этого послать сообщение этому компоненту.
2) Послать сообщение форме первого приложения, а в событии формы OnMessage обработать полученное сообщение (взять из него текст и тд.) и высветить нужное тебе сообщение с полученным текстом.

ИМХО, второе решение проще.

7.9K
01 апреля 2007 года
user13
66 / / 07.11.2006
Такой вопрос.
Если Memo В данный момент пишут скажем в Label пишет что Memo активно... если не пишут в Memo в Label пишут что Memo не активно...
Как реализовать ?
7.9K
01 апреля 2007 года
user13
66 / / 07.11.2006
Такой вопрос
если в Memo1 на Ct3D:=false; То вид MEmo менятся
Как зделать тоже самое с RichEdit1, Ct3D:=false не помогает
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог