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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2008, 02:26   #1
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию TStringGrid автопрокрутка

Записи добавляются автоматически. Как заставить VerticalScrollBar при добавлении в конец новой записи прокручиваться в самый низ?
Carbon вне форума Ответить с цитированием
Старый 08.03.2008, 08:15   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Код:
   StringGrid1.RowCount := 1024;
   StringGrid1.Row := 1023;
   StringGrid1.TopRow := 1023;
alexBlack вне форума Ответить с цитированием
Старый 08.03.2008, 08:42   #3
1234
Заблокирован
 
Регистрация: 09.11.2007
Сообщений: 97
По умолчанию

Цитата:
Записи добавляются автоматически. Как заставить VerticalScrollBar при добавлении в конец новой записи прокручиваться в самый низ?
не знаю ребята как у вас но у меня почемуто он делал это автоматически я ему ничего не прописывал
1234 вне форума Ответить с цитированием
Старый 08.03.2008, 12:21   #4
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Наверное, компонент палёный. Такое бывает.
Carbon вне форума Ответить с цитированием
Старый 08.03.2008, 12:26   #5
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от alexBlack Посмотреть сообщение
Код:
   StringGrid1.RowCount := 1024;
   StringGrid1.Row := 1023;
   StringGrid1.TopRow := 1023;
К сожалению, не работает.

ЗЫ Я, похоже, немного поторопился. Вот решил просто кинуть на форму StringGrid1, Button1. При нажатии на кнопку:

Код:
StringGrid1.Row := 1023;
Работает отлично (StringGrid1.TopRow := 1023; не нужен, посколько оставляет добавляемую запись вверху). Но в программе, которую я делаю, это не пашет.


Вот схема метода по добавлению записи в таблицу. Может скажете, что может мешать работать (здесь код на C++):

Код:
int TestingProcess(параметры)
{

    ...
    int rows=Tester->ProcessTable->RowCount,

    for (int i=1;exists;i++)
    {
        //проверка существования файла
        exists=FileExists(InFile);
        if (exists)
        {
            if (Tester->ProcessTable->Cells[0][rows-1]!="")
            {
                Tester->ProcessTable->RowCount++;
                rows++;
            }

            Tester->ProcessTable->Cells[0][rows-1]=(AnsiString)task;
            Tester->ProcessTable->Cells[1][rows-1]=(AnsiString)i;

            //Здесь выполнение чужого приложения
            if (!java)
                res=proc->Execute(...);
            else
                res=proc->ExecuteJava(...);

            //Перехват ошибки от запуска
            if (crash!=SUCCESS)
                switch (crash)
                {
                    case ACCESS_VIOLATION:
                    {
                        Tester->ProcessTable->Cells[3][rows-1]=
                        "Access Violation";
                        Tester->Common->Items->Add("#"+(AnsiString)i+
                        " access violation");
                    }
                    break;
                    ...
                }
            else
                //Превышение лимита времени
                if (!res)
                {
                    Tester->ProcessTable->Cells[3][rows-1]=
                    "Time limit exceeded";
                    Tester->Common->Items->Add("#"+(AnsiString)i+
                    " time limit exceeded");
                }
                //Иначе
                else
                {
                    //Проверка существования файла
                    if (FileExists(Dir+"output.txt"))
                        //Проверка решения (запуск другого приложения)
                        if (CheckSolution(source,Dir,solution,i))
                        {
                            //Если всё сработало верно
                            Tester->ProcessTable->Cells[3][rows-1]="Accepted";
                            ...
                        }
                        //Ответ неправильный
                        else
                        {
                            Tester->ProcessTable->Cells[3][rows-1]="Wrong answer";
                            ...
                        }
                    //Выходного файла нет
                    else
                    {
                        Tester->ProcessTable->Cells[3][rows-1]="Crash(No output file)";
                        ...
                    }
                }

            //Деление времени на секунды и вывод в качестве строки
            Tester->ProcessTable->Cells[2][rows-1]=TimeFormat(time);

            Application->ProcessMessages();
        }
    }

    Application->ProcessMessages(); //(1)

    //Эту строку я пробовал добавлять перед (1) и после. Никакого эффекта
    Tester->ProcessTable->Row=rows-1;

    ...
}

ЗЫЫ Извиняюсь. Я прокрутку впихнул не туда. Надо было в основною цикл добавления, а я после него. Извиняюсь за беспокойства и за C++ код в разделе по Delphi . Тему можно закрывать.

Последний раз редактировалось Carbon; 08.03.2008 в 13:00.
Carbon вне форума Ответить с цитированием
Старый 08.03.2008, 12:58   #6
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Странно, вроде все правильно
Неужели разница в компонентах ?

У меня Row = xxxx просто устанавливает указатель на нужную запись, но не перемещает VScroll

TopRow = xxx устанавливает верхнюю видимую строку, но не меняет указатель на текущую.

Вот это непонятно:

Цитата:
StringGrid1.TopRow := 1023; не нужен, посколько оставляет добавляемую запись вверху
Ведь имеено topRow и определяет какие записи видимы, а не Row.
alexBlack вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кнопки в TStringGrid dimon000 Общие вопросы Delphi 4 29.07.2008 10:54
Поиск в TstringGrid Dim0n Компоненты Delphi 11 07.07.2008 08:34
TStringGrid Gromsky Компоненты Delphi 4 04.03.2008 23:41
TStringGrid mrandrey Компоненты Delphi 2 06.07.2007 15:24
RichEdit - автопрокрутка Svop Компоненты Delphi 1 14.02.2007 23:26