Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 3

Автор: Maks150988
Дата сообщения: 15.09.2007 21:31
Jokerjar79
Yes. Из ресурсов..
Автор: Jokerjar79
Дата сообщения: 16.09.2007 05:18
Maks150988, тада попробуй так:

Код: procedure ChIcon(P: pointer);
var
h: HWnd;
begin
repeat
h := FindWindow(nil,'caption');
Application.ProcessMessages;
until
h <> NULL;
SendMessage(h, WM_SETICON, 1, LoadIcon(hInstance, 'имя иконки в ресурсе'));
exitthread(0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
h: cardinal;
begin
CreateThread(nil,0,@ChIcon,0,0,h);
MessageBox(Handle,'Я MessageBox с иконкой!','caption',MB_OK or MB_ICONINFORMATION);
end;
Автор: Maks150988
Дата сообщения: 16.09.2007 18:56
Работает. Спасибо.
Автор: OOD
Дата сообщения: 16.09.2007 19:19
Подскажите как избавиться от символа || т.е. перехода на новую строку в Edit?

Текст в Memo перенес в Edit ,но в тексте были созданы строки с новой строки .. при вставлении стройки в memo значек || т.е. следующая строка
Автор: antonn2
Дата сообщения: 16.09.2007 19:42
пройтись в цикле по memo.text и удалить символы #10 и #13
Автор: Jokerjar79
Дата сообщения: 16.09.2007 19:48
OOD
Edit1.Text := StringReplace(Memo1.Text,#13#10,' ',[rfReplaceAll]);
Автор: OOD
Дата сообщения: 16.09.2007 19:53
Jokerjar79
спасибо помогло
Автор: ShamaN
Дата сообщения: 17.09.2007 08:26
Помогите пожалуйста разобраться со следующей проблемой: в D7 создаю и показываю форму:

Код:
Application.CreateForm(TForm5, Form5);
Form5.ShowModal;
Автор: lavren
Дата сообщения: 17.09.2007 08:51
ShamaN
Попробуй после этого кода добавить:
SetForegroundWindow( Form5.Handle)
или
BringWindowToTop(Form5.Handle)
Автор: ShamaN
Дата сообщения: 17.09.2007 09:39
lavren
спасибо, но это не помогло
Автор: xy
Дата сообщения: 17.09.2007 09:41
Подскажите плиз есть ли для Делфи какая-нибудь утилитка, которая может проанализировать проект и показать кто-кого uses, всего uses и т.п. :)
Автор: A_V
Дата сообщения: 17.09.2007 09:46
xy
попробуй Icarus
Автор: Arvur
Дата сообщения: 17.09.2007 09:59
xy
Тулза: _http://www.peganza.com/products_icarus.htm
Был еще для этого дела эксперт OPXperts, только хомяк подох... могу на рапиду выложить.
Автор: xy
Дата сообщения: 17.09.2007 10:03
Arvur
A_V
То что надо, спасибо!!
Автор: A_V
Дата сообщения: 17.09.2007 10:09
ShamaN
можешь попробовать еще Application.ProcessMessages перед вызовом ShowModal
Автор: relictus
Дата сообщения: 17.09.2007 10:22
Arvur
А не пробовал ли ты Pascal Analyzer от той же пеганзы? Какие впечатления?
PS Может и где взять не trial знаешь?
Автор: ShamaN
Дата сообщения: 17.09.2007 10:22
A_V
пробовал уже. не помогает.
еще варианты есть?

Добавлено:
relictus
тема есть в варезнике.
Автор: RostY
Дата сообщения: 17.09.2007 10:37
ShamaN
может в пропертях главного окна что-то типа fsStayOnTop
Автор: ShamaN
Дата сообщения: 17.09.2007 10:45
RostY
нет, fsNormal...
Автор: A_V
Дата сообщения: 17.09.2007 10:46
ShamaN
У меня вобще в XP такой баг был - помог DisableProcessWindowsGhosting (и ProcessMessages тоже помагал). Насчет 98-х хз, уже года 3 не видел.
вобще на sql.ru это обсуждалось:
http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=68228&pg=1
Автор: ShamaN
Дата сообщения: 17.09.2007 10:50
A_V
эту тему уже изучил и все вариатны то же попробовал. Ничего не помогает.
Автор: AntonVA1
Дата сообщения: 17.09.2007 11:25
ShamaN
Со времён вынь98 я это делаю примерно так:

Цитата:

function EditService(var ID: Integer): Boolean;
begin
with TServiceEditForm.Create(Application) do
try
Result:=ShowModal=mrOK;
finally Free;
end;
end;

Вроде, таких проблем никогда не замечал, хотя с 98 ушел уже очень давно.
У меня таким образом открывались все формы редактирования, а их штук 20 в проге, скорее всего, меня бы юзеры задолбали этой проблемой.

Добавлено:
Вроде то же самое, хотя в чужих программах я такое тоже замечал, обычно это происходило во время тормозов компа- попробуй разгрузить процесс загрузки формы- убери от туда открытие запросов, и т.д. Это можно делать в другой форме, открытой ранее.
Автор: GreatOne
Дата сообщения: 17.09.2007 12:31
Всем привет!
У меня возник следующий вопросец:
В проге есть несколько обьектов у которых на определенное событие выполняеться одна и таже процедура. Вопрос в следующем - если у весх этих обьектов одновременно будет вызванно это событие, то эта процедура выполниться у всех обьектов?? Или какие-то будут пропущенны? Если выполниться у всех, то в каком порядке будет выполньтся процедура(если одновременно будет вызванна)?

P.S. Простите меня нуба
Автор: antonn2
Дата сообщения: 17.09.2007 13:07
GreatOne
нет такого понятия "одновременно" в однопоточном приложении. одновременно выполняется только одно "действие", как оно отработает, дальше перейдет очередь выполнения к событию другого объекта.

Короче не парься%)
Автор: skinash
Дата сообщения: 18.09.2007 08:28
GreatOne
Запусти отладку и по F8 смотри что за чем выполняется. Так более наглядно, но вредно для программирования. Это говорит о плохом стиле проектирования программы.
Автор: diodio
Дата сообщения: 18.09.2007 10:49
Уважаемые гуру.
Задался целью спрятать программу в трей.

procedure TForm1.ControlWindow(var Msg: TMessage);
begin
if Msg.WParam = SC_MINIMIZE then
begin
Ic(1, Application.Icon); // Добавляем значок в трей
ShowWindow(Handle, SW_HIDE); // Скрываем программу
end
else
inherited;
end;

Сама форма скрывается, но в в панели задач сама программка остается висеть.
Я так понимаю, что-то я пропустил? Как убрать?
Ногами просьба не пинать, я только начинаю кодить...
Автор: RostY
Дата сообщения: 18.09.2007 10:56
diodio
нужно сделать что-то типа:

Application.OnMinimize := HideForm;

procedure TForm1.HideForm(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;

или тут глянь _http://www.delphimaster.ru/cgi-bin/forum.pl?id=1189229108&n=18
Автор: diodio
Дата сообщения: 18.09.2007 11:50
Угу, спасибо, помогло.
Автор: mdid
Дата сообщения: 18.09.2007 12:08
есть dll
library work;

uses
SysUtils,ShellApi,Messages,Classes,Windows,Registry;


procedure WriteToReg(Programm:string;OpenK:String;Value:String);stdcall;
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
Reg.RootKey :=HKEY_CURRENT_USER;
Reg.OpenKey('\Software\BlackRose\'+programm, True);
Reg.WriteString(OpenK,Value);
Reg.CloseKey;
Reg.Free;
end;


function ReadFromReg(Programm:string;Value:String):String; stdcall;
var
Reg : TRegistry;
begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_CURRENT_USER;
Reg.OpenKey('\Software\BlackRose\'+programm, True);
Result:=Reg.ReadString(value);
Reg.CloseKey;
Reg.Free;
end;

exports WriteToReg,ReadFromReg;

begin
end.
есть тестовая прога
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ShellApi, StdCtrls,Registry;

type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
{$IFNDEF work}
procedure WriteToReg(Programm:string;OpenK:String;Value:String); stdcall;
function ReadFromReg(Programm:string;Value:String):String; stdcall;
{$ENDIF}

var
Form1: TForm1;

implementation

{$IFNDEF work}
procedure WriteToReg; external 'work.dll';
function ReadFromReg; external 'work.dll';
{$ENDIF}

{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);
begin

WriteToReg('11','1','Жопа'); <- всен норм...тоесть пишет то что задано и туда куда задано
ReadFromReg('11','1'); <-invalid pointer operation
end;

нифига не пойму..де ошибка?
Автор: skinash
Дата сообщения: 18.09.2007 12:28
mdid
var
S: string;

...

S := ReadFromReg('11','1');

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: 1С: Конвертация данных 2.0


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.