Я начинающий, подскажите пожалуйста, как...
Если вы только начинаете осваивать Delphi или считаете, что ваш вопрос простой для более опытных участников форума, то задавайте его здесь, не надо создавать для этого отдельные темы.
Если вы размещаете вопрос здесь, то , пожалуйста, прочтите следующее:
1. когда будете задавать свой вопрос, то делайте это нажимая на "ответ"(не путать с "быстрый ответ") и кратко указывайте в "заголовке" тему своего вопроса;
2. опишите чего вы хотели добиться.
3. если у вас возникла какая-то ошибка, и вы не знаете как её исправить, то обязательно приведите текст самой ошибки;
4. если это необходимо, приведите фрагмент вашего кода(ни в коем случае не надо писать весь код), также при добавлении кода пользуйтесь тегами([code ] и [ /code]);
5. укажите версию Delphi, которую используете и все настройки проекта;
6. если у вас возникли проблемы с нестандартными компонентами, то обязательно приведите ссылку, по которой их можно скачать.
7. соблюдайте правила форума
Удачи.
Модераторы форума Delphi & Kylix: Delpher, kosfiz & OlgaKr
Если вы с чем-то несогласны или у вас есть предложения обращайтесь к модераторам в приват.
Если Memo В данный момент пишут скажем в Label пишет что Memo активно... если не пишут в Memo в Label пишут что Memo не активно...
Как реализовать ?[/quote]
используй Timer. можно приблизительно так сделать:
begin
Timer1.Enabled:=false;
Label1.Caption:='активно';
Timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:='не активно';
Timer1.Enabled:=false;
end;
только установить надо в свойство Interval таймера приемлимое значение.
может можно еще как-то, но и так вроде нормально работать должно.
Подскажите пожалуйста: "как сделать прозрачный ListBox ?"
Подскажите пожалуйста, как корректно удалить все элементы из ListBox'a?
Конструкция типа
ListBox1.Items.Clear;
ListBox1.Items.Destroy;
при последующем добавлении элементов в ListBox и/или выходе из программы выдает ошибку доступа(Access Violation).
Ошибки? Тогда ищи их в своём коде.
А вызывать Destroy вообще нельзя. Это порушит инфраструктуру в самом листбоксе.
Кроеме того, если у тебя на каждый элемент повешен некий объект, то неплохо бы вызывать для них деструкторы:
ListBox1.Items.Objects.Free;
end;
Я эту статью уже видел. Там описаны некоторые функции, которые не работаю. Т.е. если попробовать установить компонент –выдаст ошибки, а если все-таки по извращаться, то при его добавлении в форму –Delphi слетает… Какие еще есть идеи ?
Другое дело как, ведёт себя этот код.
Контрол элементарно не позволяет системе затереть регион, который он занимает на предке. - это раз. И вызывает обработчик рисования предка при отрисовке каждого элемента. - это два.
Если под контрол положить кнопку, то будет странноватый эффект :p
ListBox1.Items.Objects.Free;
end;
Не пашет. Точнее пашет, но не совсем...
После "очистки" ListBox'a, при последующем добавлении эл-тов,сначала идут "стертые" элементы, в виде пустых строчек, а только потом добавленные...
P.S. у меня Delphi 7
Я пробовал под делфи 7, ос xpsp2. Странно, но у меня он вызывает ошибку переполнения (при помещении его на форму), затем делфи предлогает сохранить все, и вылетает...
есть ли еще какие-нибудь варианты?
Не пашет. Точнее пашет, но не совсем...
После "очистки" ListBox'a, при последующем добавлении эл-тов,сначала идут "стертые" элементы, в виде пустых строчек, а только потом добавленные...
P.S. у меня Delphi 7
Я так понял вам нужно удалить все элементы листбокса, а чем вам не нравится процедура listBox1.Clear; ?
Она только очищает сам список, но все элементы остаются, т.е. после добавления новых эл-тов, у меня появляется много пустых строк, а только потом что добавил.(((
Но может это только у меня....
Но может это только у меня....
Попробуйте проверить именно так как я написал -(ListBox1.clear) у вас я наблюдал ListBox1.items.clear.
p.s. я именно таким образом очищаю листбокс, затем добавляю строку и у меня все ок. ListBox.items.add();
p.p.s. destroy делать не нужно
Сначала нужно удалять из памяти объекты, а потом удалять элементы списка
ListBox1.Items.Objects.Free;
end;
ListBox1.Clear; // Или ListBox1.Item.Clear;
1. Как мне из одного приложения вызвать в другом приложениее скажим окно Help
2. Как зделать авто прокрутку в Memo
3. КАк развернуть из трея нужную мне программу
то окно, которое, скажем, появляется при выборе в меню нужной программы пункта Help?
[quote=user13]2. Как зделать авто прокрутку в Memo[/quote]
т.е. то что при нажатии на колесико мышки, а потом просто водишь мышью вверх вниз? так там вроде на Memo это срабатывает. хотя если не то, то посмотри еще здесь
[quote=user13]3. КАк развернуть из трея нужную мне программу[/quote]
неуверен, но в данном случае основное окно просто скрывается, следовательно можно попробовать отыскать скрытое окно и послать ему сообщение WM_SHOWWINDOW или вызвать функцию ShowWindow.
вот набросал функцию для нажатия на пункт меню. в качестве параметров хэндл главного окна и каптион пункта меню(в твоем случае "Help" или что-то в этом роде):
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;
If button1.Caption := 'Button1' then showmessage ('РУЛИТ');
И при выполнении происходит две ошибки:
- Type of expression must be BOOLEAN
- Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Что не правильно?
If button1.Caption := 'Button1' then showmessage ('РУЛИТ');
И при выполнении происходит две ошибки:
Type of expression must be BOOLEAN
Project1.dpr(5): Could not compile used unit 'Unit1.pas'
Что не правильно?[/quote]
надо при сравнении писать =, а не :=. должно быть так:
Свойства такого нету, но можно:
1. Кинуть на нее TImage с Align := alClient
2. Найти компонент для такой задачи, которых дофига
3. Использовать свойство TCustomForm.Canvas и прорисовывать там чего душа пожелает :)
Есть Диск 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
ну и т.д.Буду очень благодарен. Всё что удалось найти: ПОиск только файлов в папке, в кторой лежит прога.... или какие нить свойства файлов...
а используй процедуру так:findfiles('d:\');
[COLOR="Red"]Прошу прощения, но в невидимки он всё равно лезит (Скрытый файл он отображает)[/COLOR]
[COLOR="SeaGreen"]И ещё [/COLOR] [COLOR="#2e8b57"]По какому принципу он ищет папки. у меня он как то не по алфавиту их выводит:([/COLOR]
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;
Плиз, подскажите
Ладно, с этим разобрался спасибо. Всё через API ужас.
А как открыть код страницы, которая находиться в инете??
там надо еще условия поставить, будет выглядеть где-то так:
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]
её сначала надо будет загрузить на комп, а потом читать как текстовый файл.
Плиз, подскажите[/quote]
BlockRead. например:
f:file;
....................................
AssignFile(f,'test.dat');
Reset(f,1);
BlockRead(f,buf,5);
CloseFile(f);
дело в том что мне необходимо найти время которое затрачивается на выполнение операции сортировки, я узнаю время до начала операции getTime и после операции, но получается одно и тоже значение. я так предпологаю что мне каким-то образом надо пересчитать или в секунды или в милисекунды, так как комп быстрый и операция проходит мгновенно. подскажите, может у кого-то есть идеи как это реализовать или подругому вообще зделать. Help
вот примерный код
//твои действия в программе
NewTick:=GetTickCount();
Time:=NewTick-CurrentTick;
З.Ы: значение в милисекундах.
можешь еще вот эту ссылку посмотреть, правда там на Free Pascal'е, но отличия от Delphi минимальные, кстати их вообще нет.