Вопрос № 38609: Как "склеить" 2 окна за границы? (Как в winamp'e)
С границами экрана получилось, а вот окна не хотят....Вопрос № 38640: хочу написать программу -монитор порта COM, чтобы посмотреть
комманды управления периферии, но чет у меня не получается
выдает сообщение что порт занят :(, подскажите что делать?
как открыть его только для чтения так сказать....Вопрос № 38648: Здравствуйте эксперты,
вопрос заключается в следующем:
Мне необходимо посчитать количество
строк в текстовом файле (*.txt),- такой вопрос был,
но смысл заключается в том,
что в каждой строке файла должно быть 256 разных симво...Вопрос № 38651: Здраствуйте! Я объявляю две записи TRec1 и TRec2. Структура TRec1 например такая: код магазина, название магазина. Структура TRec2: код товара, название товара, цена, код магазина. Далее объявляю F1:file of TRec1 и F2:file of TRec2. Как сделать связ ...Вопрос № 38668: Здравствуйте уважаемые. Такой вот хитрый вопрос. Пишу я некий браузер. Для своих
целей. Он вроде многооконный. Пишу на основе стандартного компонента WebBrowser. Как сделать так, чтобы нажатие на ссылке в одном окне, не открывало мне окно стандартног...Вопрос № 38676: Здравствуйте, уважаемые эксперты!
Подскажите, пожалуйста, как запустить приложение от другого пользователя в WindowsXP, если известны имя и пароль пользователя (имот которого надо запустить прогуени )...Вопрос № 38692: Подскажите, есть ли специальные компоненты для работы с матрицами?...Вопрос № 38696: Здраствуйте уважаемые эксперты, как умею :( кусок кода в приложении, мне нужно чтобы как только текст в буффере изменяется, его записывало бы в мэмо1 если
его размер меньше 100. При работе програмы из приложения выбрасывает ошибку Cannot open clipboa...Вопрос № 38700: Здравствуйте.
У меня такой вопрос: можно ли в TImage ограничить область поверхности рисования окружностью, в пределах которой выполняется прорисовка, если да, то как?
Чтобы рисовать спокойно с помощью canvas, зная что если изображение выходи...
Вопрос № 38.609
Как "склеить" 2 окна за границы? (Как в winamp'e)
С границами экрана получилось, а вот окна не хотят.
Отправлен: 27.03.2006, 08:57
Вопрос задал: [Bruder] (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Cheater76
Здравствуйте, [Bruder]!
А если так
type
TForm2 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;
procedure WMMove(var Msg: TWMMove); message WM_MOVE;
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited; { вызов унаследованного обработчика события }
if M.Result = htClient then { кликнув в области окна? }
M.Result := htCaption; { если так, то мы заставили Windows думать, }
{ что щелчок был на заголовке окна. }
end;
procedure TForm2.WMMove(var Msg: TWMMove);
var ATop: integer;
begin
inherited;
ATop:=Form1.Top+Form1.Height;
if (Top > ATop-20)and(Top < ATop+20) then
SetWindowPos(Handle,HWND_TOPMOST,Form1.Left,ATop,Width,Height,0);
end;
procedure TForm2.FormShow(Sender: TObject);
begin
SetWindowPos(Handle,HWND_TOPMOST,Form1.Left,Form1.Top+Form1.Height,Width,Height,0);
end;
end.
Приложение:
Ответ отправил: Cheater76 (статус: 4-ый класс)
Ответ отправлен: 27.03.2006, 10:12
Отвечает: Leshiy2006
Здравствуйте, [Bruder]!Обрабатываете событие Form1 OnConstrainedResize описываете положение 2-й формы.
Удачи!
Ответ отправил: Leshiy2006 (статус: 6-ой класс)
Ответ отправлен: 27.03.2006, 23:48
Вопрос № 38.640
хочу написать программу -монитор порта COM, чтобы посмотреть
комманды управления периферии, но чет у меня не получается
выдает сообщение что порт занят :(, подскажите что делать?
как открыть его только для чтения так сказать.
Отправлен: 27.03.2006, 14:44
Вопрос задал: Van (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Malysh
Здравствуйте, Van!
Просмотри чтобы у тебя не было запущено прог которые обращаются к девайсу!!!!
А что бы открыть только для чтения запиши:
Это с помощью WinAPI! А можно и с помощью компонента (он вроде шаровый) Comm32.
Ответ отправил: Malysh (статус: Студент)
Ответ отправлен: 28.03.2006, 03:36
Вопрос № 38.648
Здравствуйте эксперты,
вопрос заключается в следующем:
Мне необходимо посчитать количество
строк в текстовом файле (*.txt),- такой вопрос был,
но смысл заключается в том,
что в каждой строке файла должно быть 256 разных символов...
Мне кажется что посчитать не получается из - за,
управляющих символов: #10 #13....( насколько я знаю - #10 - конец строки,
#13 - переход на следующую строку - Enter)......
Есть ли ещё какие нибудь управляющие символы,
которые могут влиять на счёт,- считаю так:
s:string; f:textfile; n:integer;
.......
repeat
readln(f,s);
inc(n); - счётчик строк
until eof(f);
........
или же с помощью Strings....
s:TStrings;
s:=TStringlist.creat;
s.loadfromfile(MyTextFile);
s.count - количество строк..
..........
Т.к символы в строках в разном порядке,
то пробовал не вставлять в середину строки символы #13 и #10
- не помогло,
если в файле реально 2000 строк показывает что то около 39-140
строки в файл записываю так:
a - массив от 0 до 255 с перемешанными числами[ 0 -255]
s - строка
i - integer
for i:=0 to 255 do
if (a[i]<>10) and (a[i]<>13) then
s:=s+chr(a[i]);
writeln(f,s);
Спасибо всем кто поможет.....
надеюсь что не проигнорируете как предыдущий вопрос :(
Отправлен: 27.03.2006, 15:46
Вопрос задал: Wlp (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: sir henry
Здравствуйте, Wlp!
Вопрос несколько странноватый, еще более странны условия.
Давайте для начала разберем, что такое строка в файле:
Строка - это набор символов, окончанием ее считается сочетание символов #13 и #10.
Вы же предлагаете не замечать именно символы конца строки. Позвольте тогда спросить - а как Вы намерены определить конец строки, если конец строки Вы будете игнорировать? Может быть Вы хотите подсчитать не количество строк, а количество символов? Пожалуйста, проясните этот момент, иначе отвечать на Ваш вопрос не имеет никакого смысла.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 27.03.2006, 17:39
Отвечает: Полховский Александр Владимирович
Здравствуйте, Wlp!
Если загружаете в TStrings, то #10#13 не загружаются, они только обрабатываются при загрузке (можете вручную посмотреть). Каждую строку Вам необходимо обработать посимвольно, записывая каждый прочитанный символ во временную строку, если его там ещё нет. Если же он там уже есть, значит строка содержит более одного символа с данным кодом. Тогда при подсчёте мы её пропускаем. Затем обновляем временную строку и обрабатываем следующую строчку.
Когда Вы записываете процедурой writeln, #10#13 автоматически вставляется в конце строки.
Поиск в строке - pos.
--------- Спасём нашу хрупкую планету !
Действительно интересно оказалось... Создал простенький проект - запускаешь - не работает :). Говорит 1, 3 строки вместо 2000 :)
В общем конструкция:
S:='';
Randomize;
for i:=0 to 254 do
begin
z := random(255);
while Chr(z) in [#00..#32] do z := random(255);
S:=S + Chr(z);
end;
Дает нужный результат :) что уж там позарыто в этих первых 32х... не разбирался. Смотрите http://www.osp.ru/pcworld/2001/05/048.htm там всё хорошо расписано.
--------- Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!
Ответ отправил: LanK (статус: 10-ый класс)
Ответ отправлен: 28.03.2006, 11:09
Вопрос № 38.651
Здраствуйте! Я объявляю две записи TRec1 и TRec2. Структура TRec1 например такая: код магазина, название магазина. Структура TRec2: код товара, название товара, цена, код магазина. Далее объявляю F1:file of TRec1 и F2:file of TRec2. Как сделать связ один-ко-многим между этими двумя файлами? Спасибо!
Отправлен: 27.03.2006, 15:52
Вопрос задал: BeTepoK_20 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Полховский Александр Владимирович
Здравствуйте, BeTepoK_20!
Вы хотите просматривать "товары магазина" в выбранном магазине ?
Листать можно только после загрузки обоих файлов (или их обработки). Я так понял, что Вам надо получить список товаров (со всеми атрибутами), выбраб один из магазинов, да ? Тогда Вам надо получить код магазина, затем пройтись по всем товарам и добавить к списку те, запись которых ссылается на нужный магазин.
--------- Спасём нашу хрупкую планету !
Здравствуйте уважаемые. Такой вот хитрый вопрос. Пишу я некий браузер. Для своих целей. Он вроде многооконный. Пишу на основе стандартного компонента WebBrowser. Как сделать так, чтобы нажатие на ссылке в одном окне, не открывало мне окно стандартного браузера, а я каким-то образом ловил это нажатие (или попытку создать новое окно) и это дело пихал в следующий компонент WebBrowser.
Заранее спасибо.
Отправлен: 27.03.2006, 17:37
Вопрос задал: Dr.Alex (статус: 9-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Лучников Ю.В.
Здравствуйте, Dr.Alex!
Используйте обработчик события OnBeforeNavigate2 объекта TWebBrowser.
Пример: procedure TForm1.WBBeforeNavigate2(Sender: TObject; const pDisp: IDispatch;
var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
var Cancel: WordBool);
var Str: String; begin
Str := URL;
MessageBox(Application.Handle, PChar(Str), 'Переход...', MB_OK);
if(CheckBox1.Checked) then Cancel := true; end;
Перед переходом по нажатой ссылке, будет выскакивать MessageBox с линком, куда будет идти переход.
Если при возникновении этого события в переменную Cancel передать булево значение ИСТИНА, то переход отменяется.
В переменной URL будет содержаться ссылка, по которой должен был произойти переход.
Успехов!
Ответ отправил: Лучников Ю.В. (статус: Профессионал) Россия, Киров WWW:Чат Кировской молодежи ICQ: 176308580 ---- Ответ отправлен: 28.03.2006, 06:17
Вопрос № 38.676
Здравствуйте, уважаемые эксперты!
Подскажите, пожалуйста, как запустить приложение от другого пользователя в WindowsXP, если известны имя и пароль пользователя (имот которого надо запустить прогуени )
Отправлен: 27.03.2006, 19:03
Вопрос задал: Николай Б. (статус: 3-ий класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Лучников Ю.В.
Здравствуйте, Николай Б.!
Пример кода находится в приложении...
Успехов!
Приложение:
Ответ отправил: Лучников Ю.В. (статус: Профессионал) Россия, Киров WWW:Чат Кировской молодежи ICQ: 176308580 ---- Ответ отправлен: 28.03.2006, 06:43
Вопрос № 38.692
Подскажите, есть ли специальные компоненты для работы с матрицами?
Отвечает: Лучников Ю.В.
Здравствуйте, Иванов Михаил Викторович!
Что вы имеете ввиду под "специальные компоненты для работы с матрицами"?
Для обработки матриц очень хорошо подходят двумерные массивы
Для отрисовки матриц на экран прекрасно подходит стандартный компонент TStringGrid с вкладки Additional.
С использованием этих двух "инструментов" я решал абсолютно все задачи с матрицами;)
Успехов!
Ответ отправил: Лучников Ю.В. (статус: Профессионал) Россия, Киров WWW:Чат Кировской молодежи ICQ: 176308580 ---- Ответ отправлен: 28.03.2006, 05:39
Отвечает: Николай Б.
Здравствуйте, Иванов Михаил Викторович!
Не разу не встречал.
А зачем они вообще нужны??? (компоненты, а не матрицы, конечно)
Ответ отправил: Николай Б. (статус: 3-ий класс)
Ответ отправлен: 28.03.2006, 08:22
Отвечает: sir henry
Здравствуйте, Иванов Михаил Викторович!
Не знаю, нужны ли специальные компоненты для этого, т.к. они будут сильно раздуты. Вот просто некотороые приемы работы с матрицами:
http://alglib.sources.ru/matrixops/
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 28.03.2006, 08:54
Вопрос № 38.696
Здраствуйте уважаемые эксперты, как умею :( кусок кода в приложении, мне нужно чтобы как только текст в буффере изменяется, его записывало бы в мэмо1 если его размер меньше 100. При работе програмы из приложения выбрасывает ошибку Cannot open clipboard, подскажите как мне можно избежать этой ошибки?
Заранее спасибо.
Приложение:
Отправлен: 27.03.2006, 22:06
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Лучников Ю.В.
Здравствуйте, Станислав!
Разберем ошибки:
1) Указатели MS и ClipBoard перед использованием нужно объявить.
2) Объекты MS и ClipBoard перед использованием нужно создать.
3) Создание объектов MS и ClipBoard нужно создавать в обработчике TForm1.FormCreate, иначе может получиться такое: событие FormActivate не наступило, а в обработчике TForm1.Timer1Timer уже используются не созданные объекты.
4) Объекты MS и ClipBoard после использования нужно освобождать.
Например по событию TForm1.FormDestroy.
5) Вызывать метод Memo1.Lines.Add в обработчике TForm1.Memo3Change нельзя!! Дабы получается зацикливание. (При вызове Add тут же вызывается OnChange).
Я его перенес в обработчик TForm1.Timer1Timer.
6) В условии (MS.Size<100) or (MS.Size>1) следует использовать логическое И, т.е. and.
7) Перед очередным вызовом метода Memo1.Lines.SaveToStream(MS) нужно очищать буфер: MS.Clear. Если этого не делать, то буфер будет накапливать информацию. Отсюда возникнут 2 проблемы:
- Не будет срабатывать условие (MS.Size>1) and (MS.Size<100) уже после нескольких вызовов Memo1.Lines.SaveToStream(MS);
- Память будет бездарно забита ненужной информацией.
Итог: Рабочий код находится в Приложении. Проверен и работает.
Успехов;)
Приложение:
Ответ отправил: Лучников Ю.В. (статус: Профессионал) Россия, Киров WWW:Чат Кировской молодежи ICQ: 176308580 ---- Ответ отправлен: 28.03.2006, 05:27
Вопрос № 38.700
Здравствуйте.
У меня такой вопрос: можно ли в TImage ограничить область поверхности рисования окружностью, в пределах которой выполняется прорисовка, если да, то как?
Чтобы рисовать спокойно с помощью canvas, зная что если изображение выходит за пределы окружности, то оно отсекается и не выводится.
Спасибо.
Отправлен: 27.03.2006, 23:22
Вопрос задал: Qwer32 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Полховский Александр Владимирович
Здравствуйте, Qwer32!
Не вижу другого способа, как поверх имеющегося image поместить ещё один такой же точно, но выставить ему свойство Transparent в true. Затем свойство image2.Picture.Bitmap.TransparentColor присвойить какой-нибудь неиспользуемый в картинке цвет (вычислить его можно анализом картинки - взять любой и прочесать все пиксели, сверяя с выбранным цветом, если такой попался - выбрать другой и повторить операцию). Нарисовать этим цветом на второй картинке круг с нужными параметрами. При этом область круга
будет прозрачна и всё, что Вы нарисуете на первой (исходной) картинке будет видно. А всё остальное покроет непрозрачный рисунок. Будет создаваться впечатление, что всё именно так и рисуется, в пределах окружности. отсекаться нарисованное не бедет, но и выводиться тоже не будет.
Создайте на пробу 3 кнопки и 2 одинаковых рисунка и сопоставьте соответствующие события OnClick. Запустив, нажмите все 3 кнопки по порядку. Одна только проблема. Теоретически, если на рисунке присутствуют все 16777216 цветов, та не удастся найти одного неиспользуемого, и нельзя будет всё это проделать. Но такое встречается крайне редко. Если вообще встречается. Отмечу, что рисунок должен быть BMP.
=========================== procedure TForm1.Button1Click(Sender: TObject);
var
TrCol: TColor;
k1, k2:integer;
found: boolean;
begin
TrCol:=clblack;
k1:=-1;
repeat
inc(TrCol);
found:=true;
inc(k1);
k2:=-1;
repeat
inc(k2);
if image1.Canvas.Pixels[k1, k2]=TrCol
then found:=false;
until (k2=image1.Height-1)or(not found);
until k1=image1.Width-1;
image2.Picture.Bitmap.TransparentColor:=TrCol;
image2.Canvas.Brush.Color:=TrCol;
image2.Canvas.Pen.Color:=TrCol;
application.MessageBox(pansichar(inttostr(TrCol)), '');
image2.Canvas.Ellipse(image1.Width div 4, image1.Height div 4, 3*image1.Width div 4, 3*image1.Height div 4);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
k1:integer;
begin
for k1:=1 to 100 do
begin
image1.Canvas.Pen.Color:=random(clwhite);
image1.Canvas.MoveTo(random(image1.Width), random(image1.Height));
image1.Canvas.LineTo(random(image1.Width), random(image1.Height));
end;
end;