Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.07.18;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.026 c
1-58148
chips
2002-07-05 14:14
2002.07.18
stringgrid - свойства


1-58103
nexus
2002-07-08 16:32
2002.07.18
Ярлыки


1-58209
MaximatorVeter
2002-07-04 22:08
2002.07.18
Ведь он пустой!


14-58264
Alice
2002-06-11 11:42
2002.07.18
Нужен компонент для связи Crystal Report 7 c Delphi6.


1-58098
Дядя Будда
2002-07-08 15:18
2002.07.18
TDBMemo





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский