Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.18;
Скачать: CL | DM;

Вниз

5 небольших вопросиков   Найти похожие ветки 

 
Goblinus ©   (2002-06-19 21:49) [0]

Всем доброго времени суток! Кто знает. ответьте, пожалуйста, на четыре небольших вопросика:

1). Пихаю на CoolBar - ToolBar, а на последнего - менюшку формы. Если теперь св-ву формы Menu не присвоить значение, на меню на ToolBar системные кнопки окошка (закрыть, свернуть, ...) не появляются. Как с этим бороться?

2). Создаю процедуру и обрабатываю событие для лябеля (Label) WM_NCHitTest. Но почему-то форму теперь можно перемещать не только за лябель, но и за саму форму. Как сделать, чтобы за форму последнюю нельзя было перетаскивать, а только за лябель можно было?

3). Как сделать, чтобы при открытии документа из эксплорера он загружался в соответствующее приложение?

4). Надо сделать, чтобы при щелчке на кнопку в содержимое ComboBox"а добавлялась строка, заданная св-вом Text этого же ComboBox"a. Причем, если такая строка уже существует. она не добавлялась бы. Почему этот код не помогает:

var
i, st1: Integer;
begin
if Combobox1.Text <> "" then begin
st1 := 0;
i := 0;
if Combobox1.Items.Count <> 0 then begin
while (i < Combobox1.Items.Count) and (st1 = 0) do begin
if Combobox1.Items.Strings[i] <> ComboBox1.Text then begin
ComboBox1.Items.Add(ComboBox1.Text);
st1 := 1;
end
else i := i + 1;
end;
end
else ComboBox1.Items.Add(ComboBox1.Text);


5). Где можно достать язык программирования, подобнвй Delphi, для OS/2?


 
AK-74 ©   (2002-06-19 21:58) [1]

4)
procedure TForm1.Button1Click(Sender: TObject);
var
IsStr: Boolean;
i: Integer;
begin
if Combobox1.Text <> "" then begin
IsStr := false;
i := 0;
while (i < Combobox1.Items.Count) and not IsStr do begin
if Combobox1.Items.Strings[i] = ComboBox1.Text then
IsStr := true;
i := i + 1;
end;
if not IsStr then
ComboBox1.Items.Add(ComboBox1.Text);
end;
end;


 
Anatoly Podgoretsky ©   (2002-06-19 21:59) [2]

5 небольших вопросиков вместе превращаются в один вопрос


 
finger ©   (2002-06-19 21:59) [3]

По второму вопросу.
Положи TPanel на форму

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Panel1: TPanel;
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
OldX,
OldY,
OldLeft,
OldTop : Integer;
ScreenDC : HDC;
MoveRect : TRect;
Dragging : Boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
ScreenDC := GetDC(0);
OldX := X;
OldY := Y;
OldLeft := X;
OldTop := Y;
MoveRect := BoundsRect;
DrawFocusRect(ScreenDC, MoveRect);
Dragging := True;
end;

end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Dragging then begin
DrawFocusRect(ScreenDC,MoveRect);
OldX := X;
OldY := Y;
MoveRect := Rect(Left+OldX-OldLeft,Top+OldY-OldTop,
Left+Width+OldX-OldLeft,Top+Height+OldY-OldTop);
DrawFocusRect(ScreenDC,MoveRect);
end;

end;

procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
DrawFocusRect(ScreenDC,MoveRect);
Left := Left+X-OldLeft;
Top := Top+Y-OldTop;
ReleaseDC(0,ScreenDC);
Dragging := False;
end;
end;

end.

Вместо панели конечно и лабел пойдет.
С уважением.


 
finger ©   (2002-06-19 22:10) [4]

А по первому вопросу ничего не понял!


 
Goblinus ©   (2002-06-19 22:26) [5]


> AK-74 © (19.06.02 21:58) Большое спааааасибо! Вопрос закрыт!


> finger © (19.06.02 21:59, 22.10) Спасибо! Щас попробую!
А насчёт первого вопроса - у меня есть меню для формы. Его надо положить на CoolBar. Я его кладу через ToolBar на него. (ToolBar.Menu). Но на этой полосе CoolBar"a (или ToolBar"а?), где меню, кнопки у до... А! Блин! Я не дописал, что это у дочернего окна так! Его разворачиваешь, а кнопки его на CoolBar"е не появляются (закрыть, свернуть, ...) :(



 
finger ©   (2002-06-19 22:29) [6]

Это тебе если не нравиться такие эффекты как я тебе привел.Всмысле там рамка вокруг окна появляется(хотя наоборот за эту рамку недавно кто то спрашивал так никто и не ответил).

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,ExtCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If ssLeft In Shift Then
Begin
ReleaseCapture;
SendMessage(Handle,WM_NCLBUTTONDOWN,HTCAPTION,0);
End;
end;

end.


С уважением.


 
finger ©   (2002-06-19 22:35) [7]

Я понял чего ты хочешь. Как запаковать меню в Toolbar я тоже знаю, но с MDI никогда не пробывал. И сегодня не смогу(Delphi, под рукой нет).
Завтра попробую - самому интересно. Да и у меня уже время 5:38 утра не соображаю ничего.
С уважением.


 
finger ©   (2002-06-19 22:40) [8]

А вообще вспомнил компонента есть Toolbar2000. И не надо никаких ControlBar"oв. Все перетаскивается, стыкуется, свое меню и т.д.
Ссылу не помню поищи на Yandex"е.


 
Goblinus ©   (2002-06-19 22:56) [9]

Спасибо, Finger. ещё раз! 2-й вопрос закрыт!


 
finger ©   (2002-06-19 23:04) [10]

А какой способ тебя устроил первый или второй. Если второй то очень жаль. С первого можно такого наворотить главное начало есть а дальше можно окна как у Адопа сделать (всмысле "ролап"), или как у Macromedia Flash MX. Тем более у тебя MDI-приложения. Шутка конечно но кто знает. У меня лично получалось.
А по третьему вопросу объясни подробнеё. Какой экплорер и в каком приложении чего открывать должен?
С уважением.


 
Goblinus ©   (2002-06-19 23:08) [11]

Вообще-то я первый способ юзал, но у меня ошибка вышла при компиле. Я удалил переменную Draggind, и всё нормально.


 
Goblinus ©   (2002-06-19 23:13) [12]

>>>>> Finger
А ввобще-то я пошел тоже спать. Я, кстати, из Питера. Щас там 23.12. Завтра экзамен потому что по физике! В ФизМат гимназию хочу поступить!
Ладно! Пока! Удачи тебе и хорошего коннекта! :-)

P.S. Ответы буду смотреть завтра с 10.00


 
MBo ©   (2002-06-20 08:30) [13]

4)
if Combobox1.Text <> "" then
if Combobox1.Items.IndexOf(Combobox1.Text)<0 then
ComboBox1.Items.Add(ComboBox1.Text);


 
Goblinus ©   (2002-06-20 10:21) [14]

:-)))
> MBo © (20.06.02 08:30)
> 4)
> if Combobox1.Text <> "" then
> if Combobox1.Items.IndexOf(Combobox1.Text)<0 then
> ComboBox1.Items.Add(ComboBox1.Text);


Вообщето 4-й вопрос уже закрыт, но за такое сокращение кода - огромнейшое спасибо!!!


 
Goblinus ©   (2002-06-20 11:13) [15]

НА 3-Й ВОПРОС ОТВЕТ НУЖЕН СРОЧНО ПЛЗ!!! В FAQ НИГДЕ НЕ МОГУ НАЙТИ!


 
Ganzer   (2002-06-20 12:04) [16]

по 3му вопросу
смотри ShellExecute
типа выполняешь ShellExecute("test.txt" ...
откроется в блокноте и т.д.

описание функции дават не буду


 
Неизвестный   (2002-06-20 12:25) [17]

Чтобы эксплорер открывал документ в соответствующем приложении, необходимо чтобы при загрузке этого документа в header"е было указано следующее:

Content-type: MIME тип документа
Content-disposition: filename=имя файла

Список MIME типов очень большой. Если надо, могу выслать на мыло.
Вот несколько типов (в формате Тип файла => MIME тип ):

avi => video/x-msvideo
bmp => image/bmp
doc => application/msword
pdf => application/pdf
rtf => text/rtf
wav => audio/x-wav
zip => application/zip


 
Goblinus ©   (2002-06-20 13:22) [18]


> Ganzer

Я имел ввиду не это. Мне надо, как, например в Ворде: тыкаешь в эксплорере по файлу, открывается Ворд, и в него загружается этот файл. А у меня он не грузится даже после регистраций расширения файла.

> Неизвестный

Чё-то я не очень понял :-(


 
Неизвестный   (2002-06-20 14:00) [19]

Сорри спутал это ж не конференция по WEB :))
MIME тип указывается в HTTP заголовке, который формируется на сервере. Если ты на сервере по клику формируешь контент с файлом.

А для открытия файла с локального лиска, думаю подойдет во эта фукция на JavaScript.
Вставь ее в свой HTML код и вызывай по клику на ссылке.

function OpenFile( FilePath )
{
var WshShell = new ActiveXObject( "WScript.Shell" );
try
{
// Для Windows NT/2000.
WshShell.Run( "cmd /C start " + FilePath, 0 );

// Для Windows 9x. Здесь возможно нужен какой-то ключ, но я его сейчас не помню. Если надо, вечером гляну, завтра скажу.
WshShell.Run( "command start " + FilePath, 0 );
}
catch( error )
{
win.alert( "Cannot open the file " + "\n\n" + FilePath );
}
}



Страницы: 1 вся ветка

Текущий архив: 2002.07.18;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.012 c
1-58096
Юра
2002-07-05 11:44
2002.07.18
Некорректное отображение формы на разных мониторах


7-58339
Reket
2002-04-22 11:14
2002.07.18
Как перехватить поток данных идущих через LPT порт?


1-58216
Doctor Deejay
2002-07-06 19:29
2002.07.18
Как сделать шустрый ProgressBar с шагом в 1% ?


1-58083
Guerrillero Che
2002-07-08 11:26
2002.07.18
Освобождение памяти ?


14-58297
Sergey13
2002-06-21 11:32
2002.07.18
Предложение по организации форума