Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2016, 20:08   #1
Mobilis123
Новичок
Джуниор
 
Регистрация: 02.12.2016
Сообщений: 3
По умолчанию нужно доделать дартс Delphi

Нужно сделать дартс с помощью StringGrida.
Матрицу я сделал, а прицел хочу сделать с помощью 2-х ScrollBar, то есть ScrollBar замкнуты условием на движение по кругу с помощью таймера, при
1-ом щелчке мыши ScrollBar останавливается и включается второй таймер (для второго ScrollBara). Сам прицел выглядит в виде двух линий вертикальной и горизонтальной, их пересечение и есть прицел, я хотел присвоить координаты центра ползунка, на ScrollBar линии.
Помогите сделать эти линии(пробовал Canvas нарисовать, но они
стираются), и присвоить им координаты.

Код программы:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, Menus, ExtCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    sg: TStringGrid;
    Edit1: TEdit;
    Edit2: TEdit;
    Label2: TLabel;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    SB1: TScrollBar;
    SB2: TScrollBar;
    Timer1: TTimer;
    Timer2: TTimer;
    Label3: TLabel;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
n,m,k,max,min:integer;
sg_max,
sg_min:integer;

procedure TForm1.Button1Click(Sender: TObject);
Var i,j:Byte;
begin
begin
 N:=StrToInt(Edit1.Text);
 M:=StrToInt(Edit2.Text);

 sg.DefaultColWidth:=24;
 sg.RowCount:=N+1;
 sg.ColCount:=M+1;
 sg.Height:=(sg.DefaultRowHeight+2)*(N+1);
 sg.Width:= (sg.DefaultColWidth +2)*(M+1);
 sg.Visible:=True;
 For I:=1 to N do
  sg.Cells[0,I]:=IntToStr(I);
 For J:=1  to M do
  sg.Cells[J,0]:=IntToStr(j);
  begin
    sb1.Width:=(sg.Width-30);
    sb2.Height:=(sg.Height);
  end;
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
Var i,J,a:Byte;
begin
randomize;
For I:=1 to n do
 For J:=1 to m do
sg.Cells[i,j]:=IntToStr(random(2))
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Timer1.Enabled=true then
 begin
 Timer1.Enabled:=false;
 Timer2.Enabled:=true;
end
 else
 Timer2.Enabled:=false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
max:=100;
sb1.Position:=sb1.Position+2;
if sb1.Position=max then
sb1.Position:=0;
Label3.Caption:=IntToStr(sb1.Position);
end;

procedure TForm1.Timer2Timer(Sender: TObject);

begin
max:=100;
sb2.Position:=sb2.Position+2;
if sb2.Position=max then
sb2.Position:=0;
end;
end.

Последний раз редактировалось Mobilis123; 02.12.2016 в 20:14.
Mobilis123 вне форума Ответить с цитированием
Старый 03.12.2016, 03:32   #2
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
прицел хочу сделать с помощью 2-х ScrollBar
Извращенец!
Нарисуй в пэйнте картинку с прозрачным фоном и крестом-прицелом на ней.
И помести эту картинку на панель.
А панель сделай прозрачной... (если дельфи 2010 или старше, на семерке это не прокатит)
kropotkina-alice вне форума Ответить с цитированием
Старый 03.12.2016, 14:39   #3
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Впрочем...
В семерке тоже можно сделать!
Последовательность такова:
1. Создаем новую форму, пусть это будет NewForm.
2. Задаем в конструкторе ее свойства:
FormStyle->StayOnTop
Color и TransparentColorValue->любой цвет, но одинаковый
TransparentColor->False
BorderStyle->bsNone
3. На эту форму кладем TImage с картинкой-прицелом и устанавливаем ей
Transparent->True
4. В событии OnShow главной формы (или когда это будет нужно для показа прицела) добавляем строчку:
NewForm.Show;
Всё!
Теперь можно передвигать прицел хоть по всему экрану...
kropotkina-alice вне форума Ответить с цитированием
Старый 04.12.2016, 15:55   #4
Mobilis123
Новичок
Джуниор
 
Регистрация: 02.12.2016
Сообщений: 3
По умолчанию

Я через scrollbar не случайно делал, там суть такая, при первом щелчке мыши, останавливается 1-й scrollbar(вертикальная линия) при втором щелчке останавливается 2-й scrollbar(горизонтальная линия, а пересечение этих линий и есть прицел, а ячейка на которой остановился "прицел" открывается и появляется MessageDlg с вопросом и вариантами ответа на него.
Я уже 50% написал кода, осталось сделать сам прицел, привязать его координаты, к координатам ползунка scrollbarа и написать функцию выбора ячейки при попадании на неё "прицела")
P.S. надеюсь поняли, как именно это должно выглядеть.
Mobilis123 вне форума Ответить с цитированием
Старый 04.12.2016, 15:57   #5
Mobilis123
Новичок
Джуниор
 
Регистрация: 02.12.2016
Сообщений: 3
По умолчанию

Я через scrollbar не случайно делал, там суть такая, при первом щелчке мыши, останавливается 1-й scrollbar(вертикальная линия) при втором щелчке останавливается 2-й scrollbar(горизонтальная линия, а пересечение этих линий и есть прицел, а ячейка на которой остановился "прицел" открывается и появляется MessageDlg с вопросом и вариантами ответа на него.
Я уже 50% написал кода, осталось сделать сам прицел, привязать его координаты, к координатам ползунка scrollbarа и написать функцию выбора ячейки при попадании на неё "прицела")
P.S. Работаю в 10-й делфи. Надеюсь поняли, как именно это должно выглядеть.
Mobilis123 вне форума Ответить с цитированием
Старый 04.12.2016, 19:27   #6
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Mobilis123 Посмотреть сообщение
Я через scrollbar не случайно делал, там суть такая, при первом щелчке мыши, останавливается 1-й scrollbar(вертикальная линия) при втором щелчке останавливается 2-й scrollbar(горизонтальная линия, а пересечение этих линий и есть прицел, а ячейка на которой остановился "прицел" открывается...
А вам кто-то мешает в первом случае начать игнорировать вертикальное воздействие на предлагаемый TImage, а в последующем - горизонтальное???
Делать это через скроллбары??? Ну это примерно то же самое, что отображать содержимое таблицы БД через набор TPanel...
Я вообще-то предложила вам решить ваше главное затруднение - как сделать прицел, спокойно передвигаемый по любому участку экрана...
Не устраивает? Ради бога - больше не смею вас отвлекать...
kropotkina-alice вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно доделать программу nightly Помощь студентам 3 24.04.2012 14:52
Нужно доделать игру Chuvak ot dushi Паскаль, Turbo Pascal, PascalABC.NET 1 22.12.2010 22:18
записи. доделать нужно.. Shelena Помощь студентам 5 21.11.2010 18:26
Помогите доделать программу на delphi - нужно сделать отчеты в Excel. Yoha Помощь студентам 0 15.06.2009 23:15
Нужно доделать 2 сайта Irina-70 Фриланс 1 19.02.2009 15:48