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

Ваш аккаунт

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

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

Подписчиков: -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
Если вы с чем-то несогласны или у вас есть предложения обращайтесь к модераторам в приват.
Страницы:
8
01 апреля 2007 года
mfender
3.5K / / 15.06.2005
Попробуй BorderStyle := bsNone;
257
01 апреля 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=user13]Такой вопрос.
Если Memo В данный момент пишут скажем в Label пишет что Memo активно... если не пишут в Memo в Label пишут что Memo не активно...
Как реализовать ?[/quote]
используй Timer. можно приблизительно так сделать:
Код:
procedure TForm1.Memo1Change(Sender: TObject);
begin
    Timer1.Enabled:=false;
    Label1.Caption:='активно';
    Timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
    Label1.Caption:='не активно';
    Timer1.Enabled:=false;
end;

только установить надо в свойство Interval таймера приемлимое значение.
может можно еще как-то, но и так вроде нормально работать должно.
27K
05 апреля 2007 года
ickis
1 / / 15.03.2007
Вопрос по поводу статьи "Сайт внутри EXE файла":

Как сделать ссылку на внешний файл? :confused:
21K
06 апреля 2007 года
Sa[i]reS
24 / / 15.02.2007
Всем привет!
Подскажите пожалуйста: "как сделать прозрачный ListBox ?"
257
07 апреля 2007 года
kosfiz
1.6K / / 18.09.2005
[quote='SareS']Всем привет!
Подскажите пожалуйста: "как сделать прозрачный ListBox ?"[/quote]
посмотри это может поможет.
12K
07 апреля 2007 года
Codman
15 / / 12.11.2005
Доброго времени суток!
Подскажите пожалуйста, как корректно удалить все элементы из ListBox'a?
Конструкция типа
ListBox1.Items.Clear;
ListBox1.Items.Destroy;
при последующем добавлении элементов в ListBox и/или выходе из программы выдает ошибку доступа(Access Violation).
5
07 апреля 2007 года
hardcase
4.5K / / 09.08.2005
Именно так, как ты и написал
Цитата: Codman
ListBox1.Items.Clear;



Ошибки? Тогда ищи их в своём коде.

А вызывать Destroy вообще нельзя. Это порушит инфраструктуру в самом листбоксе.

Кроеме того, если у тебя на каждый элемент повешен некий объект, то неплохо бы вызывать для них деструкторы:

 
Код:
for i := 0 to ListBox1.Items.Count-1 do begin
      ListBox1.Items.Objects.Free;
end;
21K
07 апреля 2007 года
Sa[i]reS
24 / / 15.02.2007
Цитата: kosfiz
посмотри это может поможет.



Я эту статью уже видел. Там описаны некоторые функции, которые не работаю. Т.е. если попробовать установить компонент –выдаст ошибки, а если все-таки по извращаться, то при его добавлении в форму –Delphi слетает… Какие еще есть идеи ?

5
07 апреля 2007 года
hardcase
4.5K / / 09.08.2005
[QUOTE='SareS;185119']Я эту статью уже видел. Там описаны некоторые функции, которые не работаю. Т.е. если попробовать установить компонент –выдаст ошибки, а если все-таки по извращаться, то при его добавлении в форму –Delphi слетает… Какие еще есть идеи ?[/QUOTE] Контрол беспроблемно копилируется, элементарно ставится, Делфя (у меня BDS 2006) и не пытается вылетать.

Другое дело как, ведёт себя этот код.

Контрол элементарно не позволяет системе затереть регион, который он занимает на предке. - это раз. И вызывает обработчик рисования предка при отрисовке каждого элемента. - это два.

Если под контрол положить кнопку, то будет странноватый эффект :p
12K
07 апреля 2007 года
Codman
15 / / 12.11.2005
for i := 0 to ListBox1.Items.Count-1 do begin
ListBox1.Items.Objects.Free;
end;

Не пашет. Точнее пашет, но не совсем...
После "очистки" ListBox'a, при последующем добавлении эл-тов,сначала идут "стертые" элементы, в виде пустых строчек, а только потом добавленные...
P.S. у меня Delphi 7
21K
07 апреля 2007 года
Sa[i]reS
24 / / 15.02.2007
Цитата: hardcase
Контрол беспроблемно копилируется, элементарно ставится, Делфя (у меня BDS 2006) и не пытается вылетать.


Я пробовал под делфи 7, ос xpsp2. Странно, но у меня он вызывает ошибку переполнения (при помещении его на форму), затем делфи предлогает сохранить все, и вылетает...
есть ли еще какие-нибудь варианты?

21K
07 апреля 2007 года
Sa[i]reS
24 / / 15.02.2007
Цитата: Codman

Не пашет. Точнее пашет, но не совсем...
После "очистки" ListBox'a, при последующем добавлении эл-тов,сначала идут "стертые" элементы, в виде пустых строчек, а только потом добавленные...
P.S. у меня Delphi 7


Я так понял вам нужно удалить все элементы листбокса, а чем вам не нравится процедура listBox1.Clear; ?

12K
07 апреля 2007 года
Codman
15 / / 12.11.2005
[QUOTE='SareS;185136']Я так понял вам нужно удалить все элементы листбокса, а чем вам не нравится процедура listBox1.Clear; ?[/QUOTE]
Она только очищает сам список, но все элементы остаются, т.е. после добавления новых эл-тов, у меня появляется много пустых строк, а только потом что добавил.(((
Но может это только у меня....
21K
07 апреля 2007 года
Sa[i]reS
24 / / 15.02.2007
Цитата: Codman
Она только очищает сам список, но все элементы остаются, т.е. после добавления новых эл-тов, у меня появляется много пустых строк, а только потом что добавил.(((
Но может это только у меня....



Попробуйте проверить именно так как я написал -(ListBox1.clear) у вас я наблюдал ListBox1.items.clear.
p.s. я именно таким образом очищаю листбокс, затем добавляю строку и у меня все ок. ListBox.items.add();
p.p.s. destroy делать не нужно

309
08 апреля 2007 года
el scorpio
1.1K / / 19.09.2006
Codman
Сначала нужно удалять из памяти объекты, а потом удалять элементы списка

 
Код:
for i := 0 to ListBox1.Items.Count-1 do begin
ListBox1.Items.Objects.Free;
end;
ListBox1.Clear; // Или ListBox1.Item.Clear;
12K
08 апреля 2007 года
Codman
15 / / 12.11.2005
Вопрос закрыт - Виноват мой делфи, попробовал код на другом компе - пашет!
21K
08 апреля 2007 года
Sa[i]reS
24 / / 15.02.2007
Может уже поможете с тем, как создать прозрачный листбокс?
7.9K
12 апреля 2007 года
user13
66 / / 07.11.2006
Есть три вопроса.
1. Как мне из одного приложения вызвать в другом приложениее скажим окно Help
2. Как зделать авто прокрутку в Memo
3. КАк развернуть из трея нужную мне программу
257
18 апреля 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=user13]1. Как мне из одного приложения вызвать в другом приложениее скажим окно Help[/quote]
то окно, которое, скажем, появляется при выборе в меню нужной программы пункта Help?
[quote=user13]2. Как зделать авто прокрутку в Memo[/quote]
т.е. то что при нажатии на колесико мышки, а потом просто водишь мышью вверх вниз? так там вроде на Memo это срабатывает. хотя если не то, то посмотри еще здесь
[quote=user13]3. КАк развернуть из трея нужную мне программу[/quote]
неуверен, но в данном случае основное окно просто скрывается, следовательно можно попробовать отыскать скрытое окно и послать ему сообщение WM_SHOWWINDOW или вызвать функцию ShowWindow.
7.9K
18 апреля 2007 года
user13
66 / / 07.11.2006
нашёт первого да
257
18 апреля 2007 года
kosfiz
1.6K / / 18.09.2005
user13
вот набросал функцию для нажатия на пункт меню. в качестве параметров хэндл главного окна и каптион пункта меню(в твоем случае "Help" или что-то в этом роде):
Код:
function ClickMenu(hMainWnd: HWND; MenuStr: string): boolean;
  var
    hRegMainMenu, hRegMenu: dword;
    j, i, fcount, scount: word;
    p: PChar;
  begin
    Result := False;
    p      := StrAlloc(20);
    hRegMainMenu := GetMenu(hMainWnd);
    fcount := GetMenuItemCount(hRegMainMenu);
    for i := 0 to fcount - 1 do
    begin
      hRegMenu := GetSubMenu(hRegMainMenu, i);
      scount   := GetMenuItemCount(hRegMenu);
      for j := 0 to scount - 1 do
      begin
        GetMenuString(hRegMenu, j, p, 20, MF_BYPOSITION);
        if pos(MenuStr, p) <> 0 then
        begin
          hRegMenu := GetMenuItemID(hRegMenu, j);
          SendMessage(hMainWnd, WM_COMMAND, hRegMenu, 0);
          Result := True;
          exit;
        end;
      end;
    end;
  end;
403
21 апреля 2007 года
ace lighting
411 / / 05.05.2006
Пишу так:

If button1.Caption := 'Button1' then showmessage ('РУЛИТ');

И при выполнении происходит две ошибки:
  1. Type of expression must be BOOLEAN
  2. Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Что не правильно?
257
21 апреля 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=ace lighting]Пишу так:

If button1.Caption := 'Button1' then showmessage ('РУЛИТ');

И при выполнении происходит две ошибки:
Type of expression must be BOOLEAN
Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Что не правильно?[/quote]
надо при сравнении писать =, а не :=. должно быть так:
 
Код:
If button1.Caption = 'Button1' then showmessage ('РУЛИТ');
403
21 апреля 2007 года
ace lighting
411 / / 05.05.2006
А есть у формы свойство, с помощью которого можно задать фоновой рисунок формы?
4.6K
22 апреля 2007 года
Tokolist
268 / / 22.03.2007
Цитата: ace lighting
А есть у формы свойство, с помощью которого можно задать фоновой рисунок формы?



Свойства такого нету, но можно:
1. Кинуть на нее TImage с Align := alClient
2. Найти компонент для такой задачи, которых дофига
3. Использовать свойство TCustomForm.Canvas и прорисовывать там чего душа пожелает :)

403
22 апреля 2007 года
ace lighting
411 / / 05.05.2006
Спасибо!
26K
23 апреля 2007 года
Dart_Sidius
19 / / 23.04.2007
Пожалуйста подскажите, как можно сделать так, чтобы приложение не отображалось в списке задач, а только в списке процессов. Нужно сделать приложение невидимым. если можно, приведите пример.
303
26 апреля 2007 года
makbeth
1.0K / / 25.11.2004
Dart_Sidius, перед Application.Run ставить Application.ShowMainWindow:=false; не пробовал? :)
13K
26 апреля 2007 года
Heart1ess
84 / / 26.04.2007
Я уж совсем новенький. Люди у меня на компе огроная проблема... не буду объяснять кароче.
Есть Диск D:\ в нём около 30 папок... в папках файлы. Кароче фтп-диск.
Из всего дано только "d:\" и всё....
Задача такая: Ткнул в кнопку, а в поле Memo1 получил результат:
D:\Soft\AA_Password_Recovery_2.0\AAPR2.0.exe
D:\Soft\Ad_Muncher\Ad_Muncher_v4.7.exe
D:\Soft\Adobe_Photoshop_CS2\Updates\Brushes.rar
D:\Soft\Adobe_Photoshop_CS2\APSCS2.iso

ну и т.д.Буду очень благодарен. Всё что удалось найти: ПОиск только файлов в папке, в кторой лежит прога.... или какие нить свойства файлов...
257
27 апреля 2007 года
kosfiz
1.6K / / 18.09.2005
а в факе смотрел? там только замени writeln на Lines.Add Memo, например: Form1.Memo1.Lines.Add.
а используй процедуру так:findfiles('d:\');
13K
27 апреля 2007 года
Heart1ess
84 / / 26.04.2007
Спасибо, огромное... а как сделать так что бы он не рылся в системных файлах(а то лезит в папку СисВолИНфо) и в скрытых тоже не рылся. Только в стандартных...?

[COLOR="Red"]Прошу прощения, но в невидимки он всё равно лезит (Скрытый файл он отображает)[/COLOR]
[COLOR="SeaGreen"]И ещё [/COLOR] [COLOR="#2e8b57"]По какому принципу он ищет папки. у меня он как то не по алфавиту их выводит:([/COLOR]
257
27 апреля 2007 года
kosfiz
1.6K / / 18.09.2005
ну тогда что-нибудь в этом роде(неуверен):
Код:
procedure findfiles(dir: string);
var
  fd: WIN32_FIND_DATA;
  hFindFile: DWORD;
begin
  hFindFile := FindFirstFile(PChar(dir + '*.*'), fd);
  if hFindFile <> INVALID_HANDLE_VALUE then
    repeat
      if ((((fd.dwFileAttributes) and (FILE_ATTRIBUTE_DIRECTORY)) =
        FILE_ATTRIBUTE_DIRECTORY) and
        (((fd.dwFileAttributes) and (FILE_ATTRIBUTE_HIDDEN)) <> FILE_ATTRIBUTE_HIDDEN)) then
      begin
        if (string(fd.cFileName) = '.') or (string(fd.cFileName) = '..') then
          continue;
        findfiles(dir + fd.cFileName + '\');
      end
      else
      if (((fd.dwFileAttributes) and (FILE_ATTRIBUTE_SYSTEM)) <> FILE_ATTRIBUTE_SYSTEM) then
        Form1.Memo1.Lines.add(dir + fd.cFileName);
    until FindNextFile(hFindFile, fd) = False;
  Windows.FindClose(hFindFile);
end;
303
28 апреля 2007 года
makbeth
1.0K / / 25.11.2004
kosfiz, тут я бы еще добавил проверку на ошибку доступа к папке - например, нет прав на просмотр (System Volume Information), т.к. такая ситуация может возникнуть с любой папкой, которая не имеет атрибута "системный" (например программу запускает пользователь с ограниченными правами в системе).
1.8K
28 апреля 2007 года
Evgeni
188 / / 14.06.2006
Подскажите пожалуйста, как в TurboPascal'e из нетипизированного файла прочитать блок длиной 5 байт. И надо именно блок прочитать.
Плиз, подскажите
13K
28 апреля 2007 года
Heart1ess
84 / / 26.04.2007
makbeth, в этом коде он не лезит в такие папки, а вот просто в скрытые лезит:(
Ладно, с этим разобрался спасибо. Всё через API ужас.
А как открыть код страницы, которая находиться в инете??
257
29 апреля 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=Heart1ess]Прошу прощения, но в невидимки он всё равно лезит (Скрытый файл он отображает)[/quote]
там надо еще условия поставить, будет выглядеть где-то так:
Код:
procedure findfiles(dir:string);
var fd:WIN32_FIND_DATA;
    hFindFile:DWORD;
begin
hFindFile:=FindFirstFile(pchar(dir+'*.*'),fd);
if hFindFile<>INVALID_HANDLE_VALUE then
 repeat
  if (((fd.dwFileAttributes) and(FILE_ATTRIBUTE_DIRECTORY))=FILE_ATTRIBUTE_DIRECTORY ) and (((fd.dwFileAttributes) and (FILE_ATTRIBUTE_HIDDEN))<>FILE_ATTRIBUTE_HIDDEN) and (((fd.dwFileAttributes) and (FILE_ATTRIBUTE_SYSTEM))<>FILE_ATTRIBUTE_SYSTEM) then
  begin
   if (string(fd.cFileName)='.') or (string(fd.cFileName)='..') then continue;
    findfiles(dir+fd.cFileName+'\')
   end
    else
    if (((fd.dwFileAttributes) and (FILE_ATTRIBUTE_SYSTEM))<>FILE_ATTRIBUTE_SYSTEM) and (((fd.dwFileAttributes) and (FILE_ATTRIBUTE_HIDDEN))<>FILE_ATTRIBUTE_HIDDEN) then
    Form1.Memo1.Lines.add(dir+fd.cFileName);
 until FindNextFile(hFindFile,fd)=false;
Windows.FindClose(hFindFile);
end;

[quote=Heart1ess]А как открыть код страницы, которая находиться в инете??[/quote]
её сначала надо будет загрузить на комп, а потом читать как текстовый файл.
257
29 апреля 2007 года
kosfiz
1.6K / / 18.09.2005
[quote=Evgeni]Подскажите пожалуйста, как в TurboPascal'e из нетипизированного файла прочитать блок длиной 5 байт. И надо именно блок прочитать.
Плиз, подскажите[/quote]
BlockRead. например:
 
Код:
var buf:array[1..5] of byte;
f:file;
....................................
AssignFile(f,'test.dat');
Reset(f,1);
BlockRead(f,buf,5);
CloseFile(f);
28K
30 апреля 2007 года
zeusgod
6 / / 30.04.2007
прошу вас помогите, я 2 дня бьюсь над этой проблемой.
дело в том что мне необходимо найти время которое затрачивается на выполнение операции сортировки, я узнаю время до начала операции getTime и после операции, но получается одно и тоже значение. я так предпологаю что мне каким-то образом надо пересчитать или в секунды или в милисекунды, так как комп быстрый и операция проходит мгновенно. подскажите, может у кого-то есть идеи как это реализовать или подругому вообще зделать. Help
19K
30 апреля 2007 года
Malice
33 / / 13.03.2007
WinApi функция GetTickCount. Возвращает количество срабатываний системного таймера(или на процессоре, не помню точно).
вот примерный код
 
Код:
CurrentTick:=GetTickCount();
 //твои действия в программе
 NewTick:=GetTickCount();
 Time:=NewTick-CurrentTick;

З.Ы: значение в милисекундах.
257
30 апреля 2007 года
kosfiz
1.6K / / 18.09.2005
zeusgod
можешь еще вот эту ссылку посмотреть, правда там на Free Pascal'е, но отличия от Delphi минимальные, кстати их вообще нет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог