Одесса: °С (вода °С)
Киев: 8°С

Тема: УчУсь, подскажите пожалуйста где ошибка. делфи 7

Ответить в теме
Показано с 1 по 8 из 8
  1. Вверх #1

    Question УчУсь, подскажите пожалуйста где ошибка. делфи 7

    Хочу заставить картинки двигаться и выполнять действие при нажатии как кнопку...
    простая форма с изменением Lable1 проходит норм ... всё работает, а здесь
    не хочет ... главное не выбивает ошибку ...


    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, OleCtrls, SHDocVw, jpeg, ExtCtrls, StdCtrls, ToolWin, ComCtrls;

    type
    TForm1 = class(TForm)
    ToolBar1: TToolBar;
    Edit1: TEdit;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    WebBrowser1: TWebBrowser;
    procedure Image1Click(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Image1Click(Sender: TObject);
    begin
    WebBrowser1.Navigate(Edit1.Text);
    end;

    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    begin
    Image1.Left := Image1.Left + 1;
    Image1.Top := Image1.Top + 1;

    end;

    procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    begin
    Image1.Left := Image1.Left - 1;
    Image1.Top := Image1.Top - 1;
    end;

    end.


    подскажите кто знает


  2. Вверх #2
    может быть потому, что MouseDown срабатывает при нажатии кнопки мыши, а MouseUp - при отпускании кнопки. В результате при обычном клике срабатывают оба события по очереди MouseDown и MouseUp. В первом координаты сдвигаются на +1 и тут же во втором обратно на -1. Картинка в итоге стоит на месте. Всё логично.

  3. Вверх #3
    Не покидает форум Аватар для Fallout
    Пол
    Мужской
    Сообщений
    6,915
    Репутация
    795
    Цитата Сообщение от KeeperDimon Посмотреть сообщение
    может быть потому, что MouseDown срабатывает при нажатии кнопки мыши, а MouseUp - при отпускании кнопки. В результате при обычном клике срабатывают оба события по очереди MouseDown и MouseUp. В первом координаты сдвигаются на +1 и тут же во втором обратно на -1. Картинка в итоге стоит на месте. Всё логично.
    Мне кажется что ТС таким образом пытается имитировать поведение типичное для кнопки, то есть нажатие на кнопку мыши приводит к некоторому сдвигу картинки что создает эффект нажатой кнопки. При отпускании кнопки мыши - картинка принимает прежнюю позицию. Отдельный разговор что этого не достаточно для качественной имитации кнопки, как пример можно нажать кнопку мыши пока курсор находится над картинкой, потом увести курсор за пределы картинки и отпустить его там, в итоге кнопка так и останется в "нажатом" состоянии. Лучше использовать стандартный компонент кнопки с картинкой, или если он не подходит то изменить его метод(процедуру) его прорисовки. Ну или на крайняк поизучать его исходники если они доступны и глянуть как там это сделано.

    Что же касается самого вопроса ТС: то я надеюсь что ошибка не в том что этот эксперимент проводится на мониторе у которого выставлено не то разрешение и т.п. и сдвига на один пиксель просто не заметить, а просто не вызывается перерисовка этой картинки.

    ТС, погугли относительно вызовов Refresh, Repaint, Update

  4. Вверх #4
    тогда почему с простой формой все работает?
    при нажатии картинка, имитирует движение кнопки и меняет значение Label1

  5. Вверх #5
    YURA34, вы бы подробно описали какого эффекта хотите добиться, а то не совсем понятно. Тогда дадим совет и поможем стопудово

  6. Вверх #6
    проблема в оформление, ну и не могу понять где ошибка в тексте выше, а тута всё работает



    unit Unit1;

    interface

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

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

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.Image1Click(Sender: TObject);
    var s: string;
    begin
    S:='так работает';
    Label1.Caption:=s;


    end;

    procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    begin
    Image1.Left := Image1.Left + 1;
    Image1.Top := Image1.Top + 1;
    end;

    procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    begin
    Image1.Left := Image1.Left - 1;
    Image1.Top := Image1.Top - 1;
    end;

    end.

  7. Вверх #7
    Не покидает форум Аватар для Fallout
    Пол
    Мужской
    Сообщений
    6,915
    Репутация
    795
    Таких исходников для делфи часто бывает не достаточно, так как там еще очень много важного хранится в свойствах компонентов, в инспекторе объектов или как он там зовется.
    Кликнул чуть не тем - поменял важное свойство и не заметил даже.

    Так что лучше выкладывай сразу файлы всего проекта, мож найдется кто опытной с установленой делфи, хотя конечно такой расклад маловероятен.

    А пока попробуй вставить в конце MouseDown и MouseUp процедур Image1.Refresh
    Если это не поможет попробуй кинуть имаджи в одну отдельную панельку, а браузер на другую отдельную панельку


    Я так понимаю это институты какие то не выкинули делфи из учебной программы?
    Последний раз редактировалось Fallout; 15.08.2011 в 01:47.

  8. Вверх #8
    YURA34, ты объясни толком, в чем проблема.

    С лейблом картинка "кнопка" дергается, а с броузером нет? Смотрел на Delphi - картинка ожила и с лейблом, и с броузером. Поставь +\- 20 - тряхнет так, что даже вата из глаз повыпадает.

    Если проблема в том, что в броузер не загружается страница, возможно в Edit1.Text адрес задан не правильно или не подключен интернет. Вот эта у меня загрузилась без ошибок, картинка дрогнула.

    Цитата Сообщение от YURA34 Посмотреть сообщение
    главное не выбивает ошибку ...
    Очевидно, потому что ее нет.


Ответить в теме

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения