Форум: "Потрепаться";
Текущий архив: 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.008 c