Arduino Pro Mini

OS/Arduino 2017.08.06 01:42 Posted by 파란크리스마스

출처 : 라즈베리파이 USB to TTL Serial Cable 연결 :: tibyte.kr - 티바이트

Arduino Pro Mini - 시리얼 케이블 연결

흰색 선(RXD)을 라즈베리파이의 TXD핀에 연결하고,
초록 선(TXD)을 라즈베리파이의 RXD핀에 연결한다.

업로드

Arduino Pro Mini의 경우 리셋을 수동으로 해야 되므로, 컴파일전에 [리셋]버튼을 누리고 있다가, [업로드...]라고 나올때 [리셋]버튼을 때준다.

L298N 모터드라이버 제어

//모터드라이버핀과 아두이노의 연결번호
#define EA 2
#define EB 7
#define M_IN1 3
#define M_IN2 4
#define M_IN3 5
#define M_IN4 6

int motorA_vector = 1;//모터의 회전방향이 반대일시 0을 1로 1을 0으로 바꿔주시면 모터의 회전방향이 바뀝니다.
int motorB_vector = 1;//모터의 회전방향이 반대일시 0을 1로 1을 0으로 바꿔주시면 모터의 회전방향이 바뀝니다.

int motor_speed = 150; // 255;//모터 스피드     

const int DELAY = 1000;

void setup() {
  Serial.begin(9600);   //시리얼모니터 
  
  //모터관련 핀들을 출력으로 설정한다.
  pinMode(EA, OUTPUT);
  pinMode(EB, OUTPUT);
  pinMode(M_IN1, OUTPUT);
  pinMode(M_IN2, OUTPUT);
  pinMode(M_IN3, OUTPUT);
  pinMode(M_IN4, OUTPUT);

  //
  delay(3000);//3초 지연
  motorstop();
}

void loop() {
  selfTest();
}

void selfTest()
{
   motor_con(motor_speed, motor_speed); //전진 
   //motor_con(-motor_speed, motor_speed); //좌회전
   //motor_con(motor_speed, -motor_speed); //우회전
   //motor_con(-motor_speed, -motor_speed); //후전
   delay(DELAY);
   motor_con(0, 0); //정지
   delay(DELAY);
}

void motorstop()
{
  motor_con(0, 0); //정지
}

void motor_con(int M1, int M2){
 
 if(M1>0){  //모터A 정회전
   digitalWrite(M_IN1,motorA_vector);
   digitalWrite(M_IN2,!motorA_vector);
 }
 else if(M1<0){  //모터A 역회전
   digitalWrite(M_IN1,!motorA_vector);
   digitalWrite(M_IN2,motorA_vector);
 }
 else{        //모터 A 정지
   digitalWrite(M_IN1,LOW);
   digitalWrite(M_IN2,LOW);
 }
 
 if(M2>0){    //모터B 정회전
   digitalWrite(M_IN3,motorB_vector);
   digitalWrite(M_IN4,!motorB_vector);
 }
 else if(M2<0){  //모터B 역회전
   digitalWrite(M_IN3,!motorB_vector);
   digitalWrite(M_IN4,motorB_vector);
 }
 else{          //모터 B 정지
   digitalWrite(M_IN3,LOW);
   digitalWrite(M_IN4,LOW);
 }
 analogWrite(EA,abs(M1)); //A모터 속도값
 analogWrite(EB,abs(M2)); //B모터 속도값
}
저작자 표시
신고

Excel - Macro

분류없음 2017.07.23 18:41 Posted by 파란크리스마스

출처 : [엑셀] 매크로를 이용하여 지정한 크기의 셀 안에 사진 넣기 : 네이버 블로그
엑셀 메크로 그림(이미지)을 엑셀 파일에 직접 포함시키는 방법 - 달집의 팁 - 문하우스

이미지 삽입 - Excel 파일에 이미지 내장

Sub insert_Pic()
    
    Dim Pic   As Variant
    
    Pic = Application.GetOpenFilename _
                    (filefilter:="Picture Files,*.jpg;*.bmp;*.tif;*.gif;*.png;*.jpeg")
    If Pic = False Then
        Exit Sub
    End If
    
    With ActiveSheet.Shapes.AddPicture(Pic, False, True, Selection.Left, Selection.Top, Selection.Width, Selection.Height)
        .LockAspectRatio = msoFalse
    End With
    
End Sub

이미지 삽입 - Excel 파일에 이미지 경로만 저장

Sub ins_Pic()

    Dim myPic   As Variant

    myPic = Application.GetOpenFilename _
                    (filefilter:="Picture Files,*.jpg;*.bmp;*.tif;*.gif")
    If myPic = False Then
        Exit Sub
    End If
     With ActiveSheet.Pictures.Insert(myPic).ShapeRange
        .LockAspectRatio = msoFalse
        .Height = Selection.Height
        .Width = Selection.Width
        .Left = Selection.Left
        .Top = Selection.Top
    End With

End Sub
저작자 표시
신고

POI - Excel 파일 내에 이미지 추출

Programming/Java 2017.07.22 18:38 Posted by 파란크리스마스

출처 : Apache POI - the Java API for Microsoft Documents
java - Get an image and its position from excel file using Apache POI

POI로 엑셀 파일 열기

import java.io.File;
import java.io.FileInputStream;

import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TestPoiMain {
	
	public static void main(String[] args) throws Exception {
		// 
		String fileName = "test1.xlsx";
		//
		File xlsFile = new File(fileName);
		
		Workbook workbook = null;
		try {
			if (xlsFile.exists()) {
				FileInputStream inputStream = new FileInputStream(xlsFile);
				workbook = new XSSFWorkbook(inputStream);

				System.out.println(workbook);
			}
		} finally {
			if (workbook != null)
				workbook.close();
		}
	}
}

POI로 Excel 파일 내에 이미지 추출

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFPicture;
import org.apache.poi.xssf.usermodel.XSSFPictureData;
import org.apache.poi.xssf.usermodel.XSSFShape;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TestPoiMain {
	
	public static void main(String[] args) throws Exception {
		// 
		String fileName = "test1.xlsx";
		String tarDir = "c:\\test";
		//
		File xlsFile = new File(fileName);
		
		Workbook workbook = null;
		try {
			if (xlsFile.exists()) {
				FileInputStream inputStream = new FileInputStream(xlsFile);
				workbook = new XSSFWorkbook(inputStream);
				
				XSSFSheet sheet = (XSSFSheet) workbook.getSheetAt(0);
				XSSFDrawing drawing = sheet.createDrawingPatriarch(); // I know it is ugly, actually you get the actual instance here
				for (XSSFShape shape : drawing.getShapes()) {
					if (shape instanceof XSSFPicture) {
						XSSFPicture picture = (XSSFPicture) shape;
						
						if (picture.getPictureData()==null) {
							System.out.println("사진 Path 사용");
							continue;
						}
						XSSFPictureData xssfPictureData = picture.getPictureData();
						ClientAnchor anchor = picture.getPreferredSize();
						int row1 = anchor.getRow1();
						int row2 = anchor.getRow2();
						int col1 = anchor.getCol1();
						int col2 = anchor.getCol2();
						System.out.println("Row1: " + row1 + " Row2: " + row2);
						System.out.println("Column1: " + col1 + " Column2: " + col2);
						// Saving the file
						String ext = xssfPictureData.suggestFileExtension();
						byte[] data = xssfPictureData.getData();
						
						FileOutputStream out = new FileOutputStream(String.format("%s\\%s_%d_%d.%s", tarDir, sheet.getSheetName(), row1, col1, ext));
						out.write(data);
						out.close();
					}
				}
			}
		} finally {
			if (workbook != null)
				workbook.close();
		}
	}
}
저작자 표시
신고

Spring MVC - ObjectMapper이용 Object to JSON 반환

Programming/Java 2017.07.16 17:13 Posted by 파란크리스마스

출처 : How to convert Java object to / from JSON (Jackson) - Mkyong
스프링3(Spring3) - @ResponseBody + jackson을 이용하여 심플하게 구현하기
Chapter16. 스프링 MVC로 REST API 사용하기 · Spring Study Group
Spring에서 JSON과 연동방법 - 와이케이의 마구잡이 - GitHub Pages
[ERROR:] cvc-complex-type.2.1: Element 'mvc ... - kkan's - Tistory

pom.xml 내용 추가

		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.13</version>
		</dependency>
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-core-asl</artifactId>
			<version>1.9.13</version>
		</dependency>

VO 객체

package com.myhome.dto;

import java.util.ArrayList;

public class JSONTest {
	
	private int id;
	private String txt;
	private ArrayList<String> list;
	private String[] arr;

	public String[] getArr() {
		return arr;
	}

	public void setArr(String[] arr) {
		this.arr = arr;
	}

	public ArrayList<String> getList() {
		return list;
	}

	public void setList(ArrayList<String> list) {
		this.list = list;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getTxt() {
		return txt;
	}

	public void setTxt(String txt) {
		this.txt = txt;
	}
}

Controller

package com.myhome.ui;

import java.io.IOException;
import java.util.ArrayList;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.myhome.dto.JSONTest;

@Controller
public class HelloController {

	@RequestMapping(value = "/jsonTest.do", method = RequestMethod.GET, produces = "application/json")
	public @ResponseBody String jsonTest() throws JsonGenerationException, JsonMappingException, IOException {
		
		// 가상의 배열및 리스트에 데이터 add
		ArrayList<String> arraylist = new ArrayList<String>();
		arraylist.add("a");
		arraylist.add("b");
		String[] array = { "a", "b", "c" };

		// VO객체에 SET한후 vo객체자체를 return
		JSONTest test = new JSONTest();
		test.setId(1);
		test.setTxt("textTxt");
		test.setList(arraylist);
		test.setArr(array);
		
		ObjectMapper mapper = new ObjectMapper();
		String jsonString = mapper.writeValueAsString(test);
		
		return jsonString;
	}
}

실행

저작자 표시
신고

Spring MVC - Object to JSON 반환

Programming/Java 2017.07.15 20:12 Posted by 파란크리스마스

출처 : 스프링3(Spring3) - @ResponseBody + jackson을 이용하여 심플하게 구현하기
Chapter16. 스프링 MVC로 REST API 사용하기 · Spring Study Group
Spring에서 JSON과 연동방법 - 와이케이의 마구잡이 - GitHub Pages
[ERROR:] cvc-complex-type.2.1: Element 'mvc ... - kkan's - Tistory

pom.xml 내용 추가

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.6.3</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.6.3</version>
		</dependency>

***-servlet.xml 내용 추가

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jee="http://www.springframework.org/schema/jee"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:security="http://www.springframework.org/schema/security"
       xsi:schemaLocation="http://www.springframework.org/schema/aop       http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                           http://www.springframework.org/schema/beans     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                           http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-2.5.xsd
                           http://www.springframework.org/schema/jee       http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
                           http://www.springframework.org/schema/mvc       http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
                           http://www.springframework.org/schema/tx        http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
                           http://www.springframework.org/schema/security  http://www.springframework.org/schema/security/spring-security-2.0.xsd">

	<mvc:annotation-driven>
		<mvc:message-converters>
			<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
				<property name="supportedMediaTypes">
					<list>
						<value>text/html;charset=UTF-8</value>
						<value>application/json;charset=UTF-8</value>
					</list>
				</property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

VO 객체

package com.myhome.dto;

import java.util.ArrayList;

public class JSONTest {
	
	private int id;
	private String txt;
	private ArrayList<String> list;
	private String[] arr;

	public String[] getArr() {
		return arr;
	}

	public void setArr(String[] arr) {
		this.arr = arr;
	}

	public ArrayList<String> getList() {
		return list;
	}

	public void setList(ArrayList<String> list) {
		this.list = list;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getTxt() {
		return txt;
	}

	public void setTxt(String txt) {
		this.txt = txt;
	}
}

Controller

package com.myhome.ui;

import java.util.ArrayList;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.myhome.dto.JSONTest;

@Controller
public class HelloController {

	@RequestMapping(value = "/jsonTest.do", method = RequestMethod.GET, produces = "application/json")
	public @ResponseBody JSONTest jsonTest() {
		
		// 가상의 배열및 리스트에 데이터 add
		ArrayList<String> arraylist = new ArrayList<String>();
		arraylist.add("a");
		arraylist.add("b");
		String[] array = { "a", "b", "c" };

		// VO객체에 SET한후 vo객체자체를 return
		JSONTest test = new JSONTest();
		test.setId(1);
		test.setTxt("textTxt");
		test.setList(arraylist);
		test.setArr(array);
		return test;
	}
}

실행

저작자 표시
신고

Node.js - Windows에 설치

Programming/Node.js 2017.07.09 19:13 Posted by 파란크리스마스

출처 : [nodejs] 윈도우에서 node.js 설치 및 실행하기 - 워크식스 블로그

PATH에 추가

C:\server\node-v6.11.2-win-x64

Hello world

C:\> node
>
(To exit, press ^C again or type .exit)
> console.log('hello world!')
hello world!
undefined

웹서비스

// 모듈을 추출합니다.
var http = require('http');

// 웹 서버를 만들고 실행합니다.
http.createServer(function (request, response) {
  response.writeHead(200, { 'Content-Type': 'text/html' });
  response.end('<h1>Hello World!</h1>');
}).listen(80, function () {
  console.log('Server running at http://127.0.0.1/');
});

실행

C:\> node http_test.js
저작자 표시
신고

Swift - 외부라이브러리 사용

Programming/Swift 2017.07.01 17:15 Posted by 파란크리스마스

Swift - 외부라이브러리 사용

출처 : DLRadioButton
Seorenn SIGSEGV: Swift 프로젝트에서 Objective-C 코드를 함께 사용하기

외부라이브러리 파일 추가

파일 추가 옵션 선택

브릿지 헤더 파일 생성

브릿지 헤더 파일 설정

자동으로 설정되지만 설정이 되지 않았을 경우 아래와 같이 설정 필요

Button Type 변경

Button Type 변경 전

Button Type 변경 후

Button 라디오버튼의 경우 그룹으로 묶기

Button 라디오버튼 하나의 이벤트 생성


Button 라디오버튼 이벤트 구현

    @IBAction func optionClicked(_ sender: DLRadioButton) {
        print(sender.currentTitle!)

        if (sender == radio1) { // (sender.currentTitle == "석굴암") {
            imageView.image = image1
        } else if (sender.currentTitle == "남대문") {
            imageView.image = image2
        } else if (sender.currentTitle == "독립기념관") {
            imageView.image = image3
        }
    }
저작자 표시
신고

Swift - Layout 가운데 정렬

Programming/Swift 2017.07.01 10:07 Posted by 파란크리스마스

출처 : IOS 오토레이아웃(AUTOLAYOUT) 사용패턴1 화면 가운데 버튼 배치하기

Top, Width, Height 설정

가운데 정렬


상대 좌표 배치

수평 상대 좌표 설정

수직 상대 좌표 배치

멀티터치 옵션 설정

저작자 표시
신고

Swift - Free Draw

Programming/Swift 2017.07.01 09:46 Posted by 파란크리스마스

출처 : Freehand drawing on iOS in Swift - Ilya Puchka


    override func touchesBegan(_ touches: Set<uitouch>, with event: UIEvent?) {
        if let touch = touches.first {
            messageLabel.text = "touchesBegan"
            tapCountLabel.text = String(touch.tapCount)
            touchCountLabel.text = String(touches.count)
            
            lastPoint = touch.location(in: drawImageView)
        }
    }
    
    override func touchesMoved(_ touches: Set<uitouch>, with event: UIEvent?) {
        if let touch = touches.first {
            messageLabel.text = "touchesMoved"
            tapCountLabel.text = String(touch.tapCount)
            touchCountLabel.text = String(touches.count)
            
            lineWidth = CGFloat(Int(textLineWidth.text!)!);
            
            UIGraphicsBeginImageContext(drawImageView.frame.size)
            if let context = UIGraphicsGetCurrentContext() {
                context.setLineWidth(lineWidth)
                context.setStrokeColor(lineColor)
                context.setLineCap(CGLineCap.round)
                
                drawImageView.image?.draw(in: CGRect(origin: CGPoint(x : 0, y : 0), size: drawImageView.frame.size))
                
                context.move(to: lastPoint)
                let currentPoint = touch.location(in: drawImageView)
                context.addLine(to : currentPoint)
                context.strokePath()
                
                drawImageView.image = UIGraphicsGetImageFromCurrentImageContext()
                
                lastPoint = currentPoint
            }
            UIGraphicsEndImageContext()
        }
    }

    override func touchesEnded(_ touches: Set<uitouch>, with event: UIEvent?) {
        if let touch = touches.first {
            messageLabel.text = "touchesEnded"
            tapCountLabel.text = String(touch.tapCount)
            touchCountLabel.text = String(touches.count)
        }
    }


저작자 표시
신고

Swift - 예외처리

Programming/Swift 2017.07.01 09:28 Posted by 파란크리스마스

출처 : Swift 에러 (Error) 처리, 예외 상황 다루기 (try, throws, defer 등) : 네이버 ...

    enum ParseError : Error {
        case OverSize
        case UnderSize
        case InvalidFormat(value : String)
        case InvalidData(value : String)
    }

예외발생

    func parseTime(timeString : NSString) throws -> Time {
        
        var retTime = Time(hour : 0, min : 0, sec : 0)
        
        guard timeString.length == 8 else {
            if timeString.length > 8 {
                throw ParseError.OverSize
            } else {
                throw ParseError.UnderSize
            }
        }
        
        if let hour = Int(timeString.substring(to: 2)) {
            print(hour)
            guard hour >= 0 && hour < 24 else {
                throw ParseError.InvalidFormat(value: "시간")
            }
            
            retTime.hour = hour
        } else {
            throw ParseError.InvalidFormat(value: "시간")
        }
        
        if let min = Int(timeString.substring(with : NSRange(location : 3, length : 2))) {
            print(min)
            guard min >= 0 && min < 60 else {
                throw ParseError.InvalidFormat(value: "분")
            }
            
            retTime.min = min
        } else {
            throw ParseError.InvalidFormat(value: "분")
        }
        
        if let sec = Int(timeString.substring(from : 6)) {
            print(sec)
            guard sec >= 0 && sec < 60 else {
                throw ParseError.InvalidFormat(value: "초")
            }
            
            retTime.sec = sec
        } else {
            throw ParseError.InvalidFormat(value: "초")
        }
        
        return retTime		
    }

예외처리

    func getPartTime(timeString : NSString, type : String) {
        do {
            let time = try parseTime(timeString : timeString)
            
            switch type {
            case "hour":
                print("\(time.hour)시")
            case "min":
                print("\(time.min)분")
            case "sec":
                print("\(time.sec)초")
            default:
                print("입력값 배당 시간 정보 없음")
            }
            
        }
        catch ParseError.OverSize {
            print("입력 문자열이 깁니다.")
        }
        catch ParseError.UnderSize {
            print("입력 문자열이 짧습니다.")
        }
        catch ParseError.InvalidData(let part) {
            print("입력값의 \(part)에 해당하는 형식 오류")
        }
        catch ParseError.InvalidFormat(let part) {
            print("입력값의 \(part)에 해당하는 값 오류")
        }
        catch {
            print("알 수 없는 오류")
        }
    }
저작자 표시
신고

AIReport - 공백 밴드 만들기

분류없음 2017.06.26 17:07 Posted by 파란크리스마스

AIReport - 공백 밴드 만들기

출처 : AI Report Manual

//-----band_memo_space RepeatBand Start-----
//-----소속 쉬트 : SHEET=Sheet2   FRAME=Frame0
//-----밴드 이름 : band_memo_space
//-----밴드 종류 : 반복 밴드
//-----bIsPrint : 감추기 속성 설정 여부 true면 출력, false면 스크립트를 생성하지 않음
private void getScriptFromband_memo_space(boolean bIsPrint) throws Exception{

	//지역 변수 선언 및 초기화
	int nBandHeight=26;    //밴드 출력 높이
	boolean bIsFirst=true;

	int spaceBandHeight = 420 - nYCurPos;
	int loopCount = spaceBandHeight / nBandHeight;

	int index = 0;

	//--while Loop Start--##
	while(index++ < loopCount){   //자동으로 생성되는 반복 밴드의 루프문

		if(bIsFirst){   //밴드 호출 후 루프 내에서 한번 만 실행되는 코드

		}   //end if(bIsFirst)
저작자 표시
신고

AIReport - 마스터 / 디테일 밴드 설정

분류없음 2017.06.26 14:17 Posted by 파란크리스마스

AIReport - 마스터 / 디테일 밴드 설정

출처 : AI Report Manual

마스터 밴드

디테일 밴드

if(user_memo_memo_index.equals(user_memo_sub_memo_index)) {
출처: http://bluexmas.tistory.com/ [파란크리스마스]
//-----band_memo_sub RepeatBand Start-----
//-----소속 쉬트 : SHEET=Sheet2   FRAME=Frame0
//-----밴드 이름 : band_memo_sub
//-----밴드 종류 : 반복 밴드
//-----bIsPrint : 감추기 속성 설정 여부 true면 출력, false면 스크립트를 생성하지 않음
private void getScriptFromband_memo_sub(boolean bIsPrint) throws Exception{

	// .. 생략 ..

	//--while Loop Start--##
	while(user_memo_sub.next()){   //자동으로 생성되는 반복 밴드의 루프문

		//데이터 fetch
		setFieldVariableFromuser_memo_sub();	//RecordSet user_memo_sub에서 필드 값 설정

		if(bIsFirst){   //밴드 호출 후 루프 내에서 한번 만 실행되는 코드

		}   //end if(bIsFirst)

		if(user_memo_memo_index.equals(user_memo_sub_memo_index)) {

			//데이터 변수 할당
			sheet20_B9 = user_memo_sub_item_name_ex;
			sheet20_E9 = user_memo_sub_memo;
			sheet20_I9 = user_memo_sub_memo2;

			// .. 생략 ..

			//bIsFirst 및 출력 라인 설정
			bIsFirst=false;

		}

	}   //while end

	if(bIsFirst){   //while 루프가 실행되지 않은 경우

	} else {   //while 루프가 실행된 경우

	}   //루프 외부 end if(bIsFirst)

}

바닥 밴드

//----band_memo_bottom VoidBand Start----
//----소속 쉬트 : SHEET=Sheet2    FRAME=Frame0
//----밴드 이름 : band_memo_bottom
//----밴드 종류 : Void 밴드
//----bIsFrist : 부모 밴드 함수나 쉬트 함수에서 최초로 호출될 때 true, 그 이후 호출될 때 false
//----bIsPrint : 감추기 속성 설정 여부. true면 출력, false면 AI 스크립트를 생성하지 않음.
//----nRepeatCnt : 부모 반복 밴드 수행 횟수와 연동 옵션 설정시 void 밴드가 수행할 반복 횟수 전달
private void getScriptFromband_memo_bottom(boolean bIsFirst, boolean bIsPrint) throws Exception{

	bIsFirst=true;

	//지역 변수 선언 및 초기화
	int nBandHeight=349;    //밴드 출력 높이
	//폰트명 : 굴림
	//폰트 사이즈 : 10
	//각 문자별 폭을 할당할 배열 선언
	int[] charWidth = {333,333,375,750,598,875,688,283,375,375,500,625,334,625,334,417,574,574,574,574,574,574,574,574,574,574,334,334,625,625,625,542,1000,646,677,718,722,625,596,770,730,270,500,635,543,813,699,770,637,773,666,633,582,711,600,895,625,625,625,500,917,500,542,500,333,563,605,572,605,567,342,605,571,241,241,500,231,861,580,605,605,605,333,525,313,570,500,750,500,500,500,500,500,500,792,1000};

	if(bIsFirst){   //밴드 최초 호출 시에만 실행되는 코드

		/*

		//DataSet 객체 생성
		//UDS DataSet user_memo 객체의 생성 여부
		if(user_memo==null){
			createUDSDataSetuser_memo();
		}else{
			user_memo.beforeFirst();
		}

		//데이터 fetch
		if(user_memo.next()){
			setFieldVariableFromuser_memo();	//ResultSet user_memo에서 필드 값 설정
		}else{
			setFieldInitFromuser_memo();	//ResultSet user_memo의 필드 값 초기화
		}

		*/

		//데이터 변수 초기화
		sheet20_B13="";
		sheet20_B15="";

		// .. 생략 ..

	}    //end if(bIsFirst)

	//AI 스크립트 출력
	if(bIsPrint){   //감추기 속성이 지정되지 않으면 bIsPrint는 true

		// .. 생략 ..

	}   //end if(bIsPrint)

	// 마지막에 페이지 넘기는 옵션
	nYCurPos = nYEndPos;

}
저작자 표시
신고


 

티스토리 툴바