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

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

Автор: Maks150988
Дата сообщения: 13.12.2008 12:47
У меня вопрос такого плана. Я бы вот хотел овнердравить кнопочку включения/выключения. В системе есть кнопка с флагами авточекбокс + пушбаттон. Суть: тыкнули - нажалась и в таком состоянии, тыкнули еще раз - отжалась. Я так подумал, блин, наверное нужно использовать SetProp и GetProp в таком случаеи в дравитеме проверять? Или есть более универсальный способ. Ведь если просто поставить в такую кнопку с флагами еще и стиль овнердрав - не отрисовывается кнопка.
Автор: bornbill
Дата сообщения: 13.12.2008 13:54
Среда разработки Delphi 2009
Посоветуйте компонент или модуль или набор функций..... вобщем хоть что-то
Надо аналог TwebBrowser с адекватной возможностью быстрой сменой
1. Прокси(интересуют как http так socks, как сделать последний моей корявой головой не нашёл как добавить.
2. Установка реферала который хочу
3. установка юзер агента который хочеться мне
Заранее благодарен...

Я знаю что всё это можно сделать и в бровсере но больно кривовато это работает и усложнений слишком много не верю что нет такого средства которое позволяло бы это делать проще....
Автор: ShIvADeSt
Дата сообщения: 13.12.2008 15:37
Maks150988

Цитата:
Я так подумал, блин, наверное нужно использовать SetProp и GetProp в таком случаеи в дравитеме проверять?

Правильно думаешь я так же реализовывал.
Автор: nowar
Дата сообщения: 13.12.2008 20:42
Люди помогите найти серийник и код, который требуется при установке Дельфи 7
Автор: art0123
Дата сообщения: 13.12.2008 20:48

Цитата:
Люди помогите найти серийник и код, который требуется при установке Дельфи 7

nowar
Под ковриком (жми редактировать) #
Автор: oan42
Дата сообщения: 13.12.2008 21:30
bornbill
1) http://www.bsalsa.com/index.html
http://www.bsalsa.com/forum/showthread.php?t=465

2) Для D2006 http://www.pbear.com TFrameBrowser Demo (Indy Version)
Free with src, развитие вряд ли последует.

См. Indy и как сделать настройку Proxy в ней.
Автор: AlexIntegral
Дата сообщения: 13.12.2008 21:48

Цитата:
Люди помогите найти серийник и код, который требуется при установке Дельфи 7


Ссылка на варез
Автор: yegorovpavel
Дата сообщения: 14.12.2008 19:07
Допустим, есть chart, на котором расположены несколько графиков. Дабы сильно не напрягаться, пускай пока будет один график. График этот строится на нескольким ключевым точкам, причем известно, что каждой точке с координатой X соответствует только одна точка с координатой Y. Собственно вопрос: как определить вторую координату точки, лежащей на графике, по известной первой координате. Штатной процедуры такой нету, а то алгоритм интреполирования писать вообще не хочется =(
Автор: V1s1ter
Дата сообщения: 14.12.2008 20:07
yegorovpavel
да целый АЛГОРИТМ ...

function PolylineYatX(X, Y: array of Double; Count: Integer; X: Double; var Y: Double): True;
var
i: Integer;
begin
Offset := 0;
i := 0;
while (i < Count) and (X < X[i]) do Inc(i);
if i < Count then begin
if X[i] = X[i+1] then Y := Y[i]
else Y := (X-X[i])*(Y[i+1]-Y[i])/(X[i+1]-X[i])+Y[i];
Result := True;
end
else Result := False;
end;

это написана за 30 секунд, возможно есть ошибки.
Автор: DmitryKz
Дата сообщения: 14.12.2008 20:24
Сорри за нубский вопрос, но нигде не нашел точного ответа: условный идентификатор, определенный директивой {$DEFINE} видим только в модуле, в котором определен или во всех модулях проекта?

Добавлено:
Сорри, поторопился, голова уже не варит - просто написал тестовое приложение и сам все увидел.
Хорошо, а существует способ ввести, так сказать, глобальный условный идентификатор?
Автор: NOwlar
Дата сообщения: 14.12.2008 21:23
DmitryKz

Конечно, есть. В опциях проекта
для D7: Directories/Conditionals -> Conditional defines
для D2009: Delphi Compiler -> Conditional defines

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

Код: {$I defines.inc}
Автор: DmitryKz
Дата сообщения: 15.12.2008 00:50
NOwlar
Спасибо за ценную информацию!
Автор: Mandor Sawall
Дата сообщения: 15.12.2008 08:18
DmitryKz
Второй вариант (NOwlar) лучше, потому что в первый есть неявное ограничение в длину. Например, в "Conditional defines" никогда не сможете указать все директивы для TRichView.
Автор: Maks150988
Дата сообщения: 15.12.2008 11:21
ShIvADeSt
Так, получилось. Только пока заметил один недочет. Вот например тот же самый вызов MessageBox. В момент появления кнопка рисуется нажатой и появляется окно от сообщения. Если закрыть окно - кнопка вдавлена. Как бы эдак в овнердраве корректно учесть и такое условие? Вот например у меня такой недоделанный проект. Код есть в архиве.
http://webdrive.avtograd.ru/Download/Explorer/temp/test.zip
И такой вопрос. Вот в винампе например когда быстро тыкаешь на кнопку - прорисовка мгновенная, а тут с тормозами какими-то. И ведь системные кнопки также быстро могут принимать состояния нажатости/отжатости при быстром на них тыканьи, а тут...
И может у вас есть код для создания собственного трекбара? Просто я хочу сделать скиновый слайдер. Системный просто не подойдет в этот проект, хотя бы тем что очень тупо делается задний фон и если нулевую кисть в статик возвращать нужно, то системный трекбар просто выглядит черным прямоугольником.
Автор: ShIvADeSt
Дата сообщения: 15.12.2008 14:59
Maks150988

Цитата:
И такой вопрос. Вот в винампе например когда быстро тыкаешь на кнопку - прорисовка мгновенная, а тут с тормозами какими-то.

На винамп не смотри, там монстры писали его. Плюс к этому в последнем винампе (который 5) нет оунердро контролов, насколько я помню там одни регионы.
Автор: Maks150988
Дата сообщения: 15.12.2008 17:47
ShIvADeSt
Такс, вот мне и нужно хоть посмотреть что там за регионизация. Чей думаю можно как-нибудь сделать код для прорисовки таким образом одной кнопки, а дальше дело времени... Хотя бы подкиньте ссылок если знаете.
Автор: diodio
Дата сообщения: 15.12.2008 22:52
Извините, как принято говорить, за ламерский вопрос, но...
Как узнать, существуют ли компоненты, динамически созданные в процессе работы программы?
Или же - как корректно все созданное удалить при завершении работы?
Автор: Yozj
Дата сообщения: 16.12.2008 00:07
diodio
Родитель компонента сам позаботится об удалении своих детей, так что позаботиться надо только о том, чтобы у компонента был родитель, и если родитель самописный - написать в деструкторе удаление потомков.
Автор: delover
Дата сообщения: 16.12.2008 06:36
diodio
Yozj
Те компоненты которые мы видим на стадии дизайна создаются и разрушаются самостоятельно. Если компонент a1 создан с родителем a2 следующим образом a1:=TMyComponent.Create(a2), то он тоже освобождается автоматически, так как ничем не отличается от компонентов дизайна. Если комнонент создан так:

Код: procedure TForm1.FormCreate(Sender: TObject);
begin
a1 := TMyComponent.Create(NIL);
end;
Автор: diodio
Дата сообщения: 16.12.2008 10:03
2 delover, спасибо.
К сожалению, в тех книгах, что я читаю сейчас о дельфях, этой проблемме не уделено внимания, а разобраться хочется. Поэтому и спрашиваю Если не могу найти ответ по книгам, королевству и гуглю )
Автор: delover
Дата сообщения: 16.12.2008 10:16
diodio
Насчитал четырнадцать книг на полке над головой, к сожалению для меня в них мало толку.

Occidit miseros crambe repetita magistros.
Автор: ymg2000
Дата сообщения: 16.12.2008 10:41
diodio
Если хочешь глубоко копнуть Delphi, то посоветую:
"Delphi для профессионалов" Марко Канту и Рея Лишнера "Секреты Delphi 2". (немного староватая версия Делфи, но концептуально не устарела. М.б. com-технологии не раскрыты, но изнанка Делфи представлена на отлично).
Пишу названия по-памяти, для уточнения погугли по авторам, но если серьезно решил заняться - не пожалеешь. Я в свою бытность многое из них почерпнул...


Добавлено:
По Канту не могу точно вспомнить, возможно что-то вроде "Мастера Delphi". Если актуально, завтра уточню.
Автор: OOD
Дата сообщения: 16.12.2008 10:55
покажите пожалуйста как запустить эту процедуру


Код:
Procedure TForm1.ThisISHowIPutFilesIn ;
var
ABigFileStream, SomeSmallFiles : TMemoryStream ;

begin
ABigFileStream := TMemoryStream.Create ;
try
SomeSmallFiles := TMemoryStream.Create ;
try
SomeSmallFiles.LoadFromFile('C:\SomeSmalFile1.txt');
AddToStream(SomeSmallFiles,ABigFileStream);
SomeSmallFiles.LoadFromFile('C:\SomeSmalFile2.txt');
AddToStream(SomeSmallFiles,ABigFileStream);
// enz
finally
SomeSmallFiles.Free ;
end;
ABigFileStream.SaveToFile('C:\MrBig.DDD')
finally
ABigFileStream.free ;
end;
end;

Procedure TForm1.AddToStream ( Source , Dest : TStream );
var
Size : Integer ;
begin
Source.position := 0 ;
// Сохраняем размер, помещая его в первый байт
Size := Source.Size ;
Dest.Write(Size,SizeOf(Integer));
Dest.CopyFrom(Source,Source.size);
end;

Автор: ymg2000
Дата сообщения: 16.12.2008 11:33
OOD
А где ты (по какому событию) вызываешь процедуру? Где точка входа?
Автор: delover
Дата сообщения: 17.12.2008 06:23
ymg2000
Приятно слышать про Марко, и особенно Рея. Марко для меня Хрестоматия, а Секреты D2 это уже Библия (если можно так сказать). Список литературы потдерживаю на все 100%.
Автор: OOD
Дата сообщения: 17.12.2008 08:11
ymg2000

Цитата:
А где ты (по какому событию) вызываешь процедуру? Где точка входа?

вот весь код:
[more]
unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure ThisISHowIPutFilesIn(Sender: TObject);
procedure AddToStream(Source , Dest : TStream);

end;

var
Form1: TForm1;

implementation

{$R *.dfm}

Procedure TForm1.ThisISHowIPutFilesIn ;
var
ABigFileStream, SomeSmallFiles : TMemoryStream ;

begin
ABigFileStream := TMemoryStream.Create ;
try
SomeSmallFiles := TMemoryStream.Create ;
try
SomeSmallFiles.LoadFromFile('C:\SomeSmalFile1.txt');
AddToStream(SomeSmallFiles,ABigFileStream);
SomeSmallFiles.LoadFromFile('C:\SomeSmalFile2.txt');
AddToStream(SomeSmallFiles,ABigFileStream);
// enz
finally
SomeSmallFiles.Free ;
end;
ABigFileStream.SaveToFile('C:\MrBig.DDD')
finally
ABigFileStream.free ;
end;
end;


Procedure TForm1.AddToStream ( Source , Dest : TStream );
var
Size : Integer ;
begin
Source.position := 0 ;
Size := Source.Size ;
Dest.Write(Size,SizeOf(Integer));
Dest.CopyFrom(Source,Source.size);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
form1.ThisISHowIPutFilesIn();
end;

end.
[/more]

Автор: ymg2000
Дата сообщения: 17.12.2008 08:47
OOD
У тебя процедура вызывается при создании формы. Судя по тексту процедуры визуально ты ничего не увидишь, впечатление какой-то недоделанности.
Автор: OOD
Дата сообщения: 17.12.2008 08:49
ymg2000
Да не могу понять как пользоваться этой процедурой взял её отсюда:

http://www.delphisources.ru/pages/faq/base/stick_several_files_and_break_apart.html

Автор: diodio
Дата сообщения: 17.12.2008 10:16
2 ymg2000, delover

Спасибо за литературу - уже скачал и распечатал. У Марко Канту вообще много тем, закрывающих мои "белые пятна".
Если есть еще подобное - просьба посоветовать.
Так же приветсвуются ссылки на веб-ресурсы.

Заранее спасибо, ребята!
Автор: ymg2000
Дата сообщения: 17.12.2008 10:40
OOD
Насколько я понял, в твоей ссылке представлена методика (реализованная в кодах), как считать много файлов в один поток. И все. А последовательность, какие файлы открывать для чтения, какие кнопки жать, использовать ли и какие компоненты для этого ты уже должен определиться и дописывать сам.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Глобальные переменные в разных формах с++ builder 'a.


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